1.面向过程与面向对象的区别:
① 面向过程:分析解决问题的步骤,然后实现,关注流程
②面向对象:以分类思想分析进行思考和解决问题,分不同类,根据各类解决问题
2.类的定义:
类是一个模板,它描述一类对象的行为和状态
类的结构:①成员变量:也就是类的属性 ② 成员方法:可以实现的行为 ③构造方法:可以初始化对象 ④内部类:即在类中再定义一个类 ⑤代码块:没有名称的代码块
3.对象:
对象是类的一个实例,是一个具体的事物,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
构造方法 :构造方法必须与类名相同,且没有返回值,不需要void 修饰 ,分为有参构造和无参构造,只要创建对象时,会默认调用一个构造方法。
方法的重载与重写 区别
方法重写就是 其他内容不变 只对方法体里面的内容进行修改
区别 | 方法重载 | 方法重写 |
返回类型 | 可以改变 | 一定不变 |
参数列表 | 必须改变 | 一定不变 |
访问 | 可以修改 | 一定不能做更严格的限制 |
面向对象语言的三大特性:封装,继承,多态
(1)封装:将类的某些信息隐藏在类的内部,防止该类的数据和代码被外部定义的代码直接访问,而它自己有提供的方法实现对隐藏信息的访问。
代码如下
public class Person{
String name;
private int age; // 对人的年龄实行封装
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age; // 返回私有属性的值 ,此方法需要在输出时用 对象名称.getAge()
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
// 如果直接创建 person.age = 15 就会报错 age已经被定义为私有
person.setAge(15);
//System.out.println(person.age); //因为age私有属性 所以要加具体方法实现
System.out.println(person.getAge());
}
}
优点:①隐藏类的实现细节 ②可以对成员变量更精确的控制 ③类的内部结构可以自由修改 ④良好的封装可以减少耦合
(2)继承:就是子类继承父类的特征和行为,从子类继承父类方法,使子类具有父类相同的行为
1.为什么需要继承 ? 如果没有继承 子类会有很多和父类相同的属性和行为 ,造成代码大量重复,不利于后期修改,为了解决这个问题,出现了继承。
继承类型:java不支持多继承,但支持多重继承。比如C可以继承B,B再继承A,但是不能C同时继承A和B
继承的特性:①子类可以拥有父类非private的属性,方法 ②子类可以拥有自己的属性,方法,即对父类进行拓展 ③子类可以用自己的方式实现父类的方法 ④提升了类之间的耦合性。
继承不得不提到super和this关键字
this:指向自己的引用,调用本类的属性和方法
super:实现对父类成员的访问,用来引用当前对象的父类
(3)多态:同一个事物在不同状态下的表现不同
存在条件:1 继承 2 重写 3 父类引用指向子类对象 Animal c = new Cat();
使用方法:1.非静态成员方法,编译看左边,运行看右边 2.静态成员方法 和 变量 编译运行都看左边 。 因为成员方法存在覆盖,而成员变量不存在
优点:1.提高了程序的扩展性 2.可替换性 3.消除类型之间的耦合关系 4.更灵活简化
访问权限修饰符
修饰符 | 同类 | 同包不同类 | 不同包子类 | 不同包其他类 |
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不可以访问 |
default | 可以访问 | 可以访问 | 不可以访问 | 不可以访问 |
privarte | 可以访问 | 不可以访问 | 不可以访问 | 不可以访问 |
4.接口:是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
(1)特性:①结构是隐式抽象的 默认指定为 public abstract 不必写出abstract关键字 ②接口中可以含有变量,隐式指定为 public static final 变量 ③接口不能实现接口中的方法,只能由实现接口的的类来实现接口中的方法
(2)接口和类的区别:①接口不能被实例化对象 ②接口中所有方法都必须是抽象的,但是在jdk8以后接口中可以用default关键字修饰非抽象方法 ③接口中可以定义静态方法和常量 ,默认被public static final 修饰 ④一个接口可以继承多个接口 ⑤当类要实现接口时,必须要实现接口中的所有方法,否则需要定义为抽象类。