IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA基础知识——封装字段,继承和多态 -> 正文阅读

[Java知识库]JAVA基础知识——封装字段,继承和多态


前言

面向对象三大基本特性:封装,继承,多态,了解更详细的概念可以看这位博主的文章三大特性五大基本原则


提示:以下是本篇文章正文内容,下面案例可供参考

一、封装字段

1.概念
封装字段是重构代码的一种操作,是通过一对存取方法来访问字段。存取方法也称为读/写方法或 getter 和 setter 方法。通常,在封装字段时,会将字段的访问修饰符更改为 private,这样就无法从类外部直接引用该字段。如果其他类要引用该字段,则它们必须使用存取方法。
可读属性get(); 可写属性set()
2.作用
(1) 利用“封装字段”重构操作,可以从现有字段快速创建属性,然后使用对新属性的引用无缝更新代码。
(2) 当字段为 public 时,其他对象可以直接访问该字段并对其进行修改,而不会被拥有该字段的对象检测到。通过使用属性封装该字段,可以禁止对字段的直接访问。
(3) 为了创建新属性,“封装字段”操作将为要封装为 private 的字段更改访问修饰符,然后为该字段生成 get 和 set 访问器。
3.代码快速生成方法
右键source----->generate Getters and Setters
4.代码举例
虽然快速生成比较方便,如果初学者想要更好的了解此方法,建议先自己尝试写几遍。下面举个例子来说明如何字段封装:

public class E01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Teacher t = new Teacher(1001);//调用构造函数
		
		int y = t.getTid();
		System.out.println(y);
		
		t.setTname("张三");
		t.teach();
		
		t.setTage(18);
		t.teach();
		int a = t.getTage();
		System.out.println(a);
	}

}
//写实体类
class Teacher {
	/*有些东西不可以修改,所以写代码要注意把属性字段写成私有的,
	通过方法开放*/
	//属性(字段) 编号,姓名,年龄 ,课程 |
	private int tid;//假设可读不可写
	private String tname;// 可写不可读
	private int age;//可读可写
    
	//私有方法没办法赋值,所以要构造函数,一般写一个无参和有参的,否则会出错
	public Teacher() {
		
	}
	public Teacher(int tid) {
		this.tid=tid;
	}
	//1.可读不可写
	public int getTid() {
		return this.tid;
	}
	
	//2.可写不可读
	public void setTname(String tname)// 可写
	{
		this.tname = tname;
	}

	//3.可写可读
	public void setTage(int age) {
		this.age = age;
	}
	public int getTage() {
		return this.age;
	}
	

	// 行为 授课
	public void teach() {
		System.out.println(this.tname + "教师需要授课!");
	}

}

简单画个图方便大家理解
在这里插入图片描述

二、继承

1.概念:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。比如动物类(父类),狗类(子类)。
2.作用
提高复用性,减少代码量, is的关系
3.特点
(1)继承的关键字是extends。
(2)Java只支持单继承,不支持多继承,但支持多重继承。
(3)继承父类的所有成员属性(私有的也继承),但是构造函数没有被继承。
4.举例代码

public class E02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal dog= new Dog();//向上转型
		dog.speak();
	}

}
//父类
class Animal{
	public String type;//
    
	public void speak() {
		System.out.println("不知道啥语言");
	}
}
//子类
class Dog extends Animal{//JAVA只支持单继承,但支持多重继承。
	//子类继承父类的成员,我们还要去改造继承过来的成员(主要指成员方法)
	//改造父类继承过来的成员方法 ,用方法的重写。
	//快速生成代码,输入sp,然后alt+/
	@Override
	public void speak() {
		// TODO Auto-generated method stub
		System.out.println("小狗都是汪汪地叫");
	}
}

5.推荐文章:大家想深刻的了解继承,可以看看这一篇文章,写的真不错,有图可以方便大家更好的理解继承概念。

三、多态

1.概念:多态是同一个行为具有多个不同表现形式或形态的能力。
2.特点
多态有动态多态和静态多态两种:
(1)动态多态(运行时多态):相同的操作,作用在不同的实例上,产生了不同的结果。要想实现动态多态,还需要向上转型,他们的实例对应的变量都是相同的数据类型(父类的类型)。比如:

	Vehicle1 v = new Car();
	v.move();
	
	v = new Bike();
	v.move();	(改变形态---向上转型一下)。

(2)静态多态(编译时多态):方法的重载
3.代码举例
上道题在公共类里也可以这么写
在这里插入图片描述
4.推荐文章多态

四、相关必备知识点

(一).final关键字
1.使用场景
(1)父类中有一些方法禁止子类对其进行改造(不允许重写)。这个时候,我们用final关键字对该方法进行修饰。
(2)有一些类不能有子类,我们可以用final关键字对该类进行修饰,该类为最终类。
2.作用:(面试题)
(1) 修饰类的时候,该类不能被继承(最终类)。
(2) 修饰方法的时候,该方法不能被重写(最终方法)
(3) 修饰成员变量的时候,一旦该成员变量被初始化后,就不能被修改。
什么地方可以修改被final修饰的变量呢?
A. 构造函数
B. 实例块
C. 静态块
D. 声明这个变量的时候可以直接赋值
(4) 修饰局部变量的时候,一旦该局部变量被初始化后,就不能被修改。
(5) 修饰参数的时候,参数不可改变。
3.代码举例:
在这里插入图片描述
(二).this关键字
this关键字:指代当前类的对象的引用。
作用:
(1)引用当前对象的成员。
(2)this( 参数列表… ) 进行构造函数之间的调用

(三).super关键字
super关键字:指代父类的引用,用法上与this是对应的
在这里插入图片描述

作用:
(1)利用super.成员,对父类的成员进行访问。举个例子如下:

//父类
class Animal{
	public String type;//
    
	public void speak() {
		System.out.println("不知道啥语言");
	}
}
//子类
class Dog extends Animal{
	@Override//注解
	public void speak() {
		super.speak();
		System.out.println("小狗都是汪汪地叫");
	}
}

运行结果如图所示:
在这里插入图片描述
(2)super(参数),调用父类的构造函数

public class E02 {

	public static void main(String[] args) {
		//Animal dog= new Dog();//向上转型
		//dog.speak();
		Dog d= new Dog();//自上而下
	}

}
//父类
class Animal{
   public String type;//
   public Animal() {
	   System.out.println("动物");
    }
}
//子类
class Dog extends Animal{
	public Dog() {
		//隐藏了super();
		System.out.println("狗");
	}
	
}

在这里插入图片描述
(四).访问修饰符
1.public:任何地方都可以访问
2.private :本类可以访问
3.protected:继承关系(可以不同包) 或者 同包
4.package(默认的) :同包
(五).static关键字
先举个例子,大家理解一下

public class E03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student student = new Student();
		student=new Student();
		student=new Student();
	}
}
class Student{
	//学生编号正好是学生计数器
	public static int sid =0;//成员实例变量
	public String sname;
	
	public Student() {
		sid++;
		System.out.println("第"+sid+"个学生");
	}
}

在这里插入图片描述
1.添加上静态关键字的成员就叫做静态成员,静态成员有静态成员变量和静态成员方法。静态成员在类加载的时候加载的,静态先后实例,先有类才有对象。
2.静态成员是属于所有对象共享的(类型所共享)。所以,访问的时候,类名.成员名
3.如果不加static关键字就叫做实例成员,他是属于某一个对象的,成员在产生对象的时候产生的。
4.静态成员的常用场景:
(1)撰写工具类的时候,为了简化代码,节约内存。
(2)当你的工具类里面所有的成员都是静态,你需要防止他们产生对象,如何防止?写一个私有的构造函数。例如:Math类
在这里插入图片描述

五、面试题总结

1.请你阐述继承?
2.super关键字的作用?
3.访问修饰符有几个?每个都什么意思?
4.final关键字有哪几个个地方可以修饰?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:54:46  更:2022-01-16 12:56:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:46:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码