JAVA总结——继承

1.继承:继承相同的方法和属性,被继承的叫父类,继承的叫子类
目的是为了避免相同的属性和方法重复定义,占用大量内存空间
  能继承什么?继承的是父类中的非私有的方法和属性(非private类型的),而且父类的构造函数也不能被继承

public class People 
    {
	// 属性  
	String name;
	protected String subject;
	int age;
	public String sex;
	//父类函数
	public void eat()
	{
		System.out.println("父类吃饭的方法!!!");
	}
    }


  父类People中有姓名、年龄、性别这三个公用属性和“吃”这个公共方法,可以被子类(学生)(老师)继承

public class Student extends People
    {
	//函数
	public void study(Teacher tea){
		System.out.println(subject+"专业"+name+"学生正在听"+tea.name+"老师上课!");
	}
	
    }


	public class Teacher extends People
    {
	//定义方法
	public void teach(Student stu){
		System.out.println(name+"老师正在教"+stu.name+"学习"+subject);
	}
    }


  在(学生)(老师)子类中,都没有定义姓名、科目等属性,但在父类(People)已经定义,然后通过extends关键字从父类继承,才不会运行出错


2.方法重写:对从父类继承过来的方法进行一下调整改进
   
public class People 
    {
	// 属性
	String name;
	protected String subject;
	int age;
	public String sex;
	//父类函数
	public void eat()
	{
		System.out.println("父类吃饭的方法!!!");
	}
    }
    

   
  父类中有一个吃饭的方法,是输出“父类吃饭的方法!!!”;
public class Student extends People
    {
	//函数
	public void study(Teacher tea)
	{
		System.out.println(subject+"专业"+name+"学生正在听"+tea.name+"老师上课!");
	}
	public void eat()
	{
		System.out.println("学生类吃饭的方法!");
	}	
    }

       
  学生这个子类中继承了父亲的eat方法,但是进行了改动,改成输出“学生类吃饭的方法!”,这就是方法的重写


方法的重载和重写是不同的
    重载:存在于同一个类中,方法名相同,参数类型、参数个数不同,或者参数顺序不一样
    重写:存在于子类中,方法名相同、返回类型相同、访问权限只能扩大不能缩小、参数必须相同
public class Student extends People
    {
	//函数
	public void study(Teacher tea)
	{
		System.out.println(subject+"专业"+name+"学生正在听"+tea.name+"老师上课!");
	}
	public String  eat(String a)
	{
		System.out.println("学生类吃饭的方法11111!");
		return "aa";
	}
}
  

  这个方法就是重载,方法名相同,但是参数类型不同

3.自动转型:将子类转为父类
自动转型之后,如果子类重写了父类的方法,调用的必然是重写后的,
     否则调用自己的方法,且不能调用子类除了重写以外的其他方法。
people stu=new student;(定义一个父类的人是一个新的学生)
people tea=new teacher(定义一个父类的人是一个新的老师)
在输出时,应遵循上述规则
tea.eat();//老师吃
stu.eat();//学生吃
peo.eat();//父类吃
   
4.多态
同一个类型的多个对象调用同一个方法,执行不同的内容,结果不一样,这种情况叫多态

你可能感兴趣的:(java)