java面向对象补充

1. 构造方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

面向对象的特征

1. 封装

在这里插入图片描述

2. 继承

在这里插入图片描述

2.1 重写(两等两小一大原则)
  • 两等
    在这里插入图片描述
    在这里插入图片描述
    父子类中出现签名一致的方法,java将先会按照重写来看待,如果发现方法签名一致,但返回值不一致就报和父类方法返回值不匹配的编译异常
    在这里插入图片描述
    不要和重载混了,方法的签名还包括括号中的参数,子类声明创建的对象,编译时就能调用父类的方法,因为有extedns关键字在好确定。但父类声明创建子类对象就不一样了,因为new在编译时还没执行,不知道这个方法该调用谁的:
    在这里插入图片描述
  • 两小
    在这里插入图片描述
    在这里插入图片描述
    子类抛出的异常要小于父类
  • 一大
    在这里插入图片描述
    在这里插入图片描述
2.2 super

在这里插入图片描述

package cn.tedu.extendsx;

public class ExtendsDemo3 {
	
	public static void main(String[] args) {
		//
		Pig p=new Pig();
		p.eat();
	}

}


//动物类
class Animal{
	//public Animal(){}
	public Animal(String name){}
	//方法
	public void eat(){
		System.out.println("在悠闲的吃东西。。。");
	}
	
	public void sleep(){
		System.out.println("在悠闲的睡觉。。。");
	}
}

//猪类
class Pig extends Animal{
	
	//子类中每种形式的构造方法都会默认调用父类的无参构造
	//父类对象优先子类对象存在
	public Pig(){
		//调用父类的无参构造
		//super语句---在子类中的构造方法调用父类的构造方法
		//首行
		//super();
		super("lili");
	}
	
	public Pig(String name){
		this();
	}
	
	
	public void eat(){
		System.out.println("在呼哧呼哧的吃...");
		System.out.println("吃饱了。。。想睡觉。。。");
		
		//所有的非静态的方法都可以通过对象调用
		//this---代表当前类的对象
		//父类对象调用
		//super---代表父类的对象的引用
		//父子类对象?
		super.sleep();
	}
}

3. 多态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 注意如果是以下情况,就会分辨不清了,编译时报错
    在这里插入图片描述
    在这里插入图片描述
  • 注意此处是两种,重写(编译时并不知道是父类的还是子类的方法)算一种,向上造型算一种
    在这里插入图片描述
    在这里插入图片描述
发布了103 篇原创文章 · 获赞 91 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42512488/article/details/100064927