一,面向对象
一,什么是面向对象
面向对象以对象为核心,该方法由一系列对象组成。类是对现实的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。 对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。 在面向对象的程序设计中,对象是组成程序的基本模块。
二,类和对象的定义及使用
类是对一类事物的描述,是抽象的。
对象是一类事物的实例,是具体的
关系:类是对现实的抽象,对象是类的实例化。
使用:类怎么定义:定义一个类包括属性与行为
例如以学生为例:
学生具有属性:姓名,性别,年龄
学生具有行为:吃,睡,玩,学
用代码表示就是
//变量(属性)
String name;//姓名
String sex;//性别
int age;//年龄
需要构建无参,有参,Getter和Setter方法,toString()方法
//方法(行为)
public void eat(){};//吃
public void sleep(){};//睡
public void play(){};//玩
public void study(){};//学
三,对象的创建与使用
创建
创建一个新类,使用什么类需要将其导入(如果在一个包内不用导入)
创建格式
类名称 对象名 = new 类名称( );
//代码表示
Student stu = new Student( );
使用方法
如果使用变量(属性):对象名.变量名
代码表示
//属性的调用
stu.name="张三";
stu.sex="男";
stu.age=12;
如果使用方法(行为):对象名.方法名
//方法的调用
stu.eat();
stu.sleep();
stu.play();
stu.study();
package Stu;
public class Student {
//属性
String name;//姓名
String sex;//性别
int age;//年龄
//方法
public void eat(){};//吃
public void sleep(){};//睡
public void play(){};//玩
public void study(){};//学
//无参
public Student() {
}
//有参
public Student(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//toString方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
package Stu;
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student stu = new Student();
//属性的调用
stu.name="张三";
stu.sex="男";
stu.age=12;
//方法的调用
stu.eat();
stu.sleep();
stu.play();
stu.study();
System.out.println(stu.name+"---"+stu.sex+"---"+stu.age);
}
}
四,对象的三大特征是什么:封装、继承、多态
一,封装
1):什么是封装
封装简单说就是包装,准确来说就是将信息隐藏,指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。隐藏内部细节,只提供一些接口与外保持联系。
对封装而言,一个对象所封装的是自己的属性和方法,所以它不需要依赖其他对象便可完成自己的操作。
1.1):封装的好处
1,类内部的结构可以自已修改
2,可以对成员进行更精准的控制
3,隐藏信息,实现细节
2):封装的使用
package Stu;
public class Student {
//属性
private String name;//姓名
//无参
public Student() {
}
//有参
public Student(String name) {
this.name = name;
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//toString方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
package Stu;
public class StudentTest {
public static void main(String[] args) {
//创建对象
Student stu = new Student();
//使用
stu.setName("张三");
}
}
二,继承
1):什么是继承
继承就是子类继承父类的特征和行为,使得子类对象具有父类相同的行为。
Java中只有单继承。
子类可以继承父类中除私有以外的所有方法。
2):继承的使用
继承格式
class 父类{ }
class 子类 extends 父类{ }
package Stu;
public class Student {
//属性
public String name="张三";//姓名
//方法
public void play(){
System.out.println("玩游戏");
}
//无参
public Student() {
}
//有参
public Student(String name) {
this.name = name;
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//toString方法
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
package Stu;
public class StudentTest {
//创建一个Student1类继承Student类
public class Student1 extends Student{
}
public static void main(String[] args) {
//创建对象
Student stu = new Student();
stu.play();
//因为继承可以直接使用
System.out.println(stu.name);
}
}
二,多态
1):什么是多态
多态就是一个方法可以根据发送对象的不同而采取多种不同的行为的方式。
多态存在的条件:
1,有继承关系
2,子类重写父类方法
3,父类引用指向子类对象
4,多态指方法,不是属性
补充:
0):this关键字和super关键字
this指当前类的成员变量和成员方法;
super指父类的成员变量和成员方法;
1):final关键字
final 不可改变的,最终的。用来修饰类,方法和变量
修饰类时,不能被继承。
修饰方法时,不能被重写。
修饰变量时,变量变常量,不能被修改。
2):权限修饰符
public 公共的;
protected 受保护的;
Default 默认的;
private 私有的;
public | protected | Default | private | |
同一类中 | ✓ | ✓ | ✓ | ✓ |
同一包中不同类 | ✓ | ✓ | ✓ | |
不同包的类中 | ✓ | ✓ | ||
不同包的不同类中 | ✓ |
3):匿名内部类
本质是一个具体实现的,父类或父接口的,匿名的子类对象。(一般在抽象方法不能实现时用)