1. 什么是封装?
定义:隐藏类中功能实现的细节
作用:1.安全,保证类中的成员或者属性的安全
2.限制对类中属性直接操作
3.验证数据有效性
封装:
- 将类中的属性私有化
- 提供对应的setter或者getter方法
- 共享类中外部可以使用方法
public static void main(String[] args){
}
Class People{
}
2. 什么是继承?
子类继承父类中所有属性和方法
注意:java中可能单一继承,支持多层继承A->B->C
super()调用父类的空构造函数初始化父类的成员变量
super(…)调用父类中对应参数类型的构造函数来初始化父类中的成员变量
强调:super();必须放置在子类的构造函数的第一行
3. 什么是多态?
定义:一种事物的多种表现形态
表现:
方法的重写(overload):子类重写父类的同名的方法【表现在继承中】
方法的重载(override):在同一类中存在同名,参数个数和类型不同构成方法重载,与返回值无关
4. 抽象(就是一种想法或者概念的抽象而成的类)
抽象类和具体类类似
抽象类不能被实例化
注意:抽象方法决定类是抽象的
具体类和抽象类的区别:
- 抽象类不能被实例化,具体类可以实例
- 抽象类中可以有方法是,一个可以定义抽象声明,具体类中有方法的实现,不能包括抽象方法
- 抽象类中具体实现的方法必须由子类进行调用
定义:用abstract修饰的类
5. 接口
定义:限制规范实现类中必须实现方法
- 接口是不能被实例化
- 接口中没有构造函数
- 接口所有定义属性或者方法都是public
- 接口中不能有具体实现的方法
- 接口可以继承接口
- 一个类可以实现多个接口
package com.dy.opp; public class ExtendsDemo { public static void main(String[] args) { Student student1=new Student(); student1.name="小明"; student1.sayhello(); } } class Human{ protected String name; protected String sex; protected int age; // public Human(String name){ // this.name=name; // System.out.println("Human->带参构造函数name"); // } public Human() { // TODO Auto-generated constructor stub } public void sayhello(){ System.out.println("晚上好"); } } class Student extends Human{ public Student(){ super(); //调用父类中空构造函数初始化父类中成员变量(super必须放在构造函数的第一行) //super根据父类中构造函数的来调用父类的构造函数 System.out.println("Student->空构造函数"); } } class Teacher extends Human{ public Teacher(){ super(); //调用父类中空构造函数初始化父类中成员变量(super必须放在构造函数的第一行) //super根据父类中构造函数的来调用父类的构造函数 System.out.println("Teacher->空构造函数"); } } package com.dy.opp; public class Encapsulation { public static void main(String[] args){ People people=new People(); people.setName("张三"); String name = people.getName(); System.out.println(name); } } class People{ private String name; private int age; private String sex; /** * 定义一个共外部设置名称的方法 * @param name */ public void setName(String name){ //this谁调用就指向谁 this.name=name; } /** * 定义一个供外部获取名称的方法 */ public String getName(){ return this.name; } /** * * @param age */ public void getAge(int age){ if(age>0){ this.age=age; }else{ this.age=1; } } } package com.dy.opp; /** * 多态:一种事物的多种表现形态 * 表现: * 方法的重写(overload) * 方法的重载(override) * @author dy * */ public class PlocyDemo { public static void main(String[] args) { Human stu1=new Student(); Human tea1=new Teacher(); sayHello(stu1); sayHello(tea1); } public static void sayHello(Human human){ human.sayhello(); } }