面向对象
面向对象:当需要实现一个功能的时候,找到实现功能的程序 强调对象
三大特性:封装、继承和多态。
标题类和对象的关系
- 类是对一类事物的描述:是抽象的
- 对象的一类事物的实例:是具体的
- 类是对象的模板,对象是类的实体
类:包括对象的属性和方法
属性:对象具有的特征
对象的创建和使用
创建格式
类名 对象名称 = new 类名();
例如:
Person person = new Person(); //Person 是创建的类
对象的使用
使用成员变量:对象名. 类名称;
使用成员方法:对象名.类名称(参数);
类的封装
用到关键字 :
private 顾名思义 就是私有的意思,只能本类使用
封装就是将一些信息隐藏起来,对外界不可见
用到方法:
setXxx(); 设置值或赋值 返回值类型是void
getXxx(); 获取值 返回值类型是和根据定义的变量的数据类型一样
class Student { //Student类中包含姓名、成绩两个属性 private String name; private double score; //无参的构造方法 public Student() { } //有参的构造方法 public Student(String name, double score) { this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } }
方法的重载
根据相同的参数个数进行传参对应的方法
就算是同一方法名,都能根据参数的传入到对应方法
package ceshi.com; public class Example01 { public static void main(String[] args) { int sum1 = add(1,2);//调用第一个两个参数都是int类型的方法 double sum2 = add(10.0,1.2,13.2); //调用第二个,三个参数都是double类型的方法 double sum3 = add(12.0,45.1);//调用第三个 ,两个参数都是double类型的方法 int sum4 = add(1,4,78);//调用第四个,三个都是int类型的方法 System.out.println(sum1); System.out.println(sum2); System.out.println(sum3); System.out.println(sum4); } public static int add(int x, int y) { return x + y; } public static double add(double x, double y,double z) { return x + y; } public static double add(double x, double y) { return x + y; } public static int add(int x, int y,int z) { return x + y; } }
类的继承
继承特点:
- 1.Java语言是单继承的。一个类的直接父类只能有唯一一个。
- 2.Java语言可以多级继承。我有一个父亲,我父亲还有一个父亲,也就是爷爷。
- 3.一个子类的直接父类是唯一的,但是一个父类可以拥有很多个子类。可以有很多个兄弟姐妹,生二胎。
用到关键词
extends 继承父类
定义父类的格式:(一个普通的类定义) public class父类名称{ //... } 定义子类的格式: public class子类名称 extends 父类名称{ // ... }
继承关系中,父子类构造方法的访问特点:
子类构造方法当中有一个默认隐含的“super()"调用,所以一定是先调用的父类构造,后执行的子类构造。
子类构造可以通过super关键字来调用父类重载构造。
super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造
总结: 子类必须调用父类构造方法,不写则赠送super()﹔写了则用写的指定的super调用,super只能有一,还必须是第一个。
super关键字的用法有三种:
1.在子类的成员方法中,访问父类的成员变量。 2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。
This关键字
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问本类的另一个构造方法。
在第三种用法当中要注意:
A. this ( …)调用也必须是构造方法的第一个语句,唯—一个。
B. super和this两种构造调用,不能同时使用。
类的多态
- 代码 当中体现多态性:父类引用执行子类对象
- 格式:
- 父类名称 对象名 = new 子类名称();
或者- 接口名称 对象名 = new 实现类名称();
多态不能访问子类的独有功能 通过类型的转换可以访问子类的功能
子到夫 :子类对象赋值给父类类型的变量指向
向上转型
class Animal{}//定义Animal类 class Dog extends Animal {} //Dog继承Animal class Cat extends Animal{}// Animal anl = new Dog();//实现了向上转型
向下转型 (就是还原动作)
//利用上面代码 Animal anl = new Dog(); Cat cat = new anl();//从动物变回猫