Java面向对象
几个概念
对象
一切皆对象,你看到的任务东西,都可以当成一个对象。
对象有静态的属性和动态的行为组成。
学生:
静态的属性:名字,身高,体重,班级,专业
动态的方法:打架,玩游戏,写作业,介绍
抽象
从一个具体的对象中抽取一组数据的过程,去除一些个性的属性。
学生:名字,身高,体重,班级,专业、血型、成绩
成绩管理系统:
名字,班级,专业、成绩
健康档案系统:
名字,身高,体重、血型
类
一组具有相同属性和行为 对象抽象
public class Student {
/**
*静态的属性
*/
private String name;
private double height;
private String classId;
/**
* 动态的方法
*/
public void introduceMyself()
{
System.out.println("姓名"+name+"身高"
+height+"班级"+classId);
}
}
消息
给某个对象发送的请求,比如,学生去打架
方法调用
面向对象基本特征
封装:
给对象一个边界,内部信息尽量隐藏,对外只提供接口
封装可以使得对象更加安全、容易。
继承:
继承就是允许后代使用前辈已经拥有的东西。
继承也是一种代码重用机制。
多态:
同一个消息,发送给不同的对象,他们所做的相同不同。
继承
public class Father {
public String name; //全,外部包 public
protected String sex; //子类protected
private int age; //类本部 private
public Father(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public void introduction()
{
System.out.println("姓名"+name+"性别"
+sex+"年龄"+age);
}
}
public class Son extends Father {
public Son(String name, String sex, int age) {
super(name, sex, age);
}
}
多态
public abstract class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public abstract void shout();
}
class Cat extends Animal{
public Cat(String name) {
super(name);
}
@Override
public void shout() {
System.out.println("喵喵"+name);
}
}
class Dog extends Animal{
public Dog(String name) {
super(name);
}
@Override
public void shout() {
System.out.println("旺旺"+name);
}
}