java之封装、继承、多态简述

  • java语言有三大特征:
  • 封装(encapsulation):对外部不可见,隐藏对象的属性和实现细节。
  • 继承(inheritance):一个类继承另一个类的非私有的成员方法或变量
  • 多态(polymorphism):每个对象表现的多样性

封装

  • 在类中,对不想对外访问的成员进行私有化,对外提供一个公开的方法访问私有的成员
封装私有成员变量 步骤
1.添加private修饰符
2.使用get和set方法

这里因上个篇章讲了封装的具体实现细节,想要了解可以查看上个博客文章

继承

  • 在原有类的基础上,产生一个新的类,在新的类中可以访问原有类的非私有的成员,并且可以添加自己的独有的成员,这个过程叫做继承,简单理解为一个类继承另一个类的非私有成员。

继承好处

  • 实现了代码的重用和扩展
  • 具有模拟现实中的关系

类的继承的使用

1.使用extends关键字来实现两个类的继承
2.被继承的类叫做,父类、超类、基类
3.继承的类叫做,子类、派生类
  • 代码实现
package waking.test.fzj;
/**
 * 继承
 * @author waking
 *
 */
public class Demo01 extends Student {
	public static void main(String[] args) {
		//可以访问原有类的非私有的属性
		Student s = new Student();
		s.id=1001;
		s.name="waking";
		s.gender="mela";
		s.age=18;
	}
}
class Student{
	public int id;
	public String name;
	public String gender;
	public int age;
}

子类对象实例化过程

  • 先实例化父类对象
  • 默认调用父类默认构造方法
  • 在实例化子类对象

不能被子类继承的成员

  • 私有成员不能被子类继承
  • 父类中的构造方法不能被子类继承,但是会在子类的构造方法中调用

继承的特点

  • 单继承:一个子类只有一个父类,一个父类可以有多个子类
  • 传递性:继承具有传递性

多态

  • 在生活中,一个事物有不同的表现形式,比如,某个艺术家有三个儿子,大儿子会写作,二儿子会唱歌,三儿子会跳舞
  • 在java代码中,同一个父类引用类型,指向不同子类的实例,实现不同的操作。简单理解父类变量,子类对象

代码实例

package waking.test.fzj;
/**
 * 多态
 * @author waking
 *
 */
public class Demo02 extends Stu{
	public static void main(String[] args) {
		Stu s = new Demo02();
		s.setId(1001);
		s.setName("waking");
		s.setGender("male");
		System.out.println(s);//Stu [id=1001, name=waking, gender=male]
	}
}
class Stu{
	private int id;
	private String name;
	private String gender;
	
	public Stu() {
		super();
	}
	public Stu(int id, String name, String gender) {
		super();
		this.id = id;
		this.name = name;
		this.gender = gender;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Stu [id=" + id + ", name=" + name + ", gender=" + gender + "]";
	}
	
	
}

多态注意点

1.子类对象赋给父类变量,向下转型,自动转型
2.父类对象赋给子类变量,向上转型,强制转型,有可能会报错