Java——继承和多态

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45613931/article/details/101993151

Java——继承和多态


本人是个新手,写下博客用于自我复习、自我总结。
如有错误之处,请各位大佬指出。
参考教材:零基础学Java


继承时,把通用操作与方法放到父类中,这样可以避免代码重复继承时,不要使用protected字段。
当不希望自己的类再被扩展时,可在类的声明前加上final,这样此类就不能再被继承。

在创建子类对象时,先执行父类的构造函数,初始化继承自父类的成员,然后执行子类的构造函数,初始化子类的成员。

在Java中,一个类只能继承一个父类,即单继承。

子类的访问控制符权限只能等于或大于父类,即子类覆盖父类方法。

类与类之间的关系:依赖、聚合、继承
1)依赖:类中的方法可以操作另一个类的实例。在程序设计中,尽量减少相互依赖类的数量。
2)聚合:一个类中包含了另一个类。

多态:拥有相同的形式,但不同的参数实现不同的功能。重载就具有多态性。多态有两种表现形式:重载和覆盖。

超类:在Java中,其类库中所有的类都从Object类中继承而来。即Object类是Java类库中所有类的父类,但在书写类的时候,不用这么写:class student extends Object; 因为系统自动认为Object是student类的父类。

equals方法在Object类中,用于测试一个对象与另一个对象是否相等。对对象来说,就是判断两个对象是否指向同一个内存区域。其实,字符串处理中的equals方法覆盖了Object类中的equals方法。

有时可以使用Object类型的变量,来代表任何类型的对象:
Object obj=new student();
有时可以将数据类型直接转换成Object类型的变量:
Object obj=(Object)x;

class inhert{
	//构造函数 系统默认的构造函数不带参数,如果需要带参数,需要自己书写
	inhert(){
		a=10;
		b=20;
	}
	inhert(int a) {
		this.a=a;
		b=10;
    }
	inhert(int a,int b){
		this.a=a;
		this.b=b;
	}
	public int a;
	public int b;
	void print(){
		System.out.println("a:"+a+"  b:"+b);
	}
}

public class ExtendsAndPolymorphic extends inhert{
	private int c;
	ExtendsAndPolymorphic()	{}
	ExtendsAndPolymorphic(int a,int b,int c){
		super(a,b); //调用父类带两个参数的构造函数
		this.c=c;
	}
	void print(){
		System.out.println("a:"+a+"  b:"+b+"  c:"+c);
	}
	public static void main(String args[]){
		//测试构造函数
		inhert ob1=new inhert();
		ExtendsAndPolymorphic ob2=new ExtendsAndPolymorphic(1,2,3);
		ob1.print();
		ob2.print();
		//利用多态性质调用相应方法
		ExtendsAndPolymorphic ob3=new ExtendsAndPolymorphic();
		ob3.print(2);
		ob3.print(2,3);
		ob3.print(2,3,5);
		ob3.print(1.1);
		ob3.print(1.1,2.2);
		ob3.print(1.1,2.2,3.3);
	}
	/*以下为(多态)重载函数*/

	void print(int x)
	{System.out.println(2*x);}
	void print(int x,int y)
	{System.out.println(2*x+y);}
	void print(int x,int y,int z)
	{System.out.println(2*x+y*z);}
	void print(double o)
	{System.out.println(2*o);}
	void print(double o,double p)
	{System.out.println(2*o+p);}
	void print(double o,double p,double q)
	{System.out.println(2*o+p+q);}
}

猜你喜欢

转载自blog.csdn.net/qq_45613931/article/details/101993151