1.1面向对象简介
面对对象是将各种事务按照一定规划划分为多个独立的对象,然后通过调用对象的方法来解决问题,当应用程序功能发生变动时,只需要修改个别对象就可以使代码维护更容易。
1.2面向对象的特点
面对对象特点:
1.封装性
第一层意思:把对象的属性和行为看成一个整体,将俩者封装在一起
第二层意思:信息隐藏,不想让外界知道信息,如private权限
简单来说:人们开车,只需要学习怎么开好车就行,不需要知道汽车内部如何工作的
2.继承性
继承性主要描述是类与类之间的关系,通过继承,可以在无须重新编写原有类的情况下,继承类的功能以及类的扩展
3.多态性
多态性是指一个类中定义的属性和方法被其它类继承后可以具有不同的数据类型或行为
类是java中一个重要引用数据类型,类是对象的抽象,用于描述一组对象的共同特征和行为。
类的定义格式
class 类名{
成员变量;
成员方法;
}
练习:写一个学生类
class Student {
String name; //字符串类型姓名,name
int age; //整数型类型年龄,age
String sex; //字符串类型性别,sex
void read(){ //定义读的方法,也就是输出显示
String score;
System.out.println("hello,我是" + name + ",正在看书");
}
}
注意: score是局部变量 ,name age sex是成员变量
java提供了四种控制权限
private:属于私有访问权限,修饰类的属性和方法,类成员使用了private关键字后则该成员只能在本类中进行访问
default:属于默认访问权限,默认的访问权限可以被本包中的其它类访问,但是不能被其它包访问
如:
protected:属于受保护的访问权限,只能被本包以及不同包的子类访问
public:属于公共访问权限,可以在所有类中被访问,不管是否在同一包中
public class Test{
public int a; //所有类访问
protected String b; //所有子包以及本包的类使用
void c (){
//default权限,本包访问内使用
System.out.println("访问权限");
}
private class InnerClass(){
//只能在本类使用
}
}
#注意类名只能被public修饰或者不写修饰名
类的封装指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过特有的方法才能操作访问,什么方法呢??
定义一个private私有属性的类后,就只能在此类中访问,外界想要访问需要通过setter和getter方法设置和获取属性值。
public class Animal {
private String name;
private int age; //私有属性
//get方法
public String getName() {
return name;
}
//set方法
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
#alt+shift+s+r快捷键,把set和get方法一次性输出
概念:继承是指现有类的基础上构建一个新的类,原有的类称父类,新创建的类称为子类,子类继承父类的属性和方法,使得子类具有父类的特征和行为。
格式:
class 子类 extends 父类{
......
}
#案例
#先定义一个动物Animal类
public class Animal {
private String name;
private int age; //私有属性
//get/set方法,让外界能够访问
public String getName() {
return name;
}
//set方法
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
#定义一个Cat类,继承Animal类
public class Dog extends Animal {
//没有任何定义
}
#定义一个测试类进行测试
public class Example01 {
public static void main(String[] args) {
Cat c = new Cat(); //创建一个Cat类的实例对象
c.setName("牧羊犬"); //访问的是父类中的,子类中没有定义
c.setAge(3);
System.out.println(c.getName() +"," + c.getAge());
}
}
子类中出现一个和父类一样的一个声明,不会继承父类之前的特征,子类在重写定义的权限不能小于父类使用的权限,否则会编译错误
因为子类重写父类方法后,无法访问到父类的方法,而super关键字可以在子类中调用父类的普通属性,方法和构造方法。
格式:super.成员变量
关键字概述:
this:代表本类对象的引用
super:代表父类对象的引用
关键字使用:
this.成员变量 (访问本类成员)
super.成员变量 (访问父类成员)
构造方法:
this()
super()
find概述:可以修饰成员方法,成员变量,类
find修饰变量,不能再次赋值
find修饰类,类不能继承
find修饰方法,不能被重写
局部变量不能用访问权限修饰
find int x = 20; //find修饰基本变量,只能赋值一次
x = 20; //再次赋值会报错
system.out.println(x);
快捷键构造方法
Alt+shift+s+c:无参构造方法
Alt+shift+s+o:有参构造方法
Alt+shift+s+倒数第四个,toString()
Alt+shift+s+r:set/get构造方法