类和对象 关于继承 关于接口
程序员文章站
2022-07-15 18:40:12
...
一、类和对象
>对象将数据和操作打包在一起,类描述一切
>用构造器创建对象
>类和类之间的关系
-关联(组合,聚集)
-泛化
二、关于继承
祖先类Object
方法重写
toString方法
Equals方法
is-a 是一个 继承关系
has-a 有一个 组合关系
三、关于接口
定义了一组功能
Comparable接口-可比较
Comparator接口-有比较器
Cloneable接口-可克隆
Serializable接口-可输入输出
五、建一个学生类
//面向对象就是把数据和操作整合在一起
public class Student {
protected String name;//protected可以让属性在子类中可用
protected int age;
protected int ability;
private Teacher teacher;//聚集
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public void study() {
ability++;
}
@Override
public String toString() {//重写toString
return "Student [name=" + name + ", age=" + age + ", ability=" + ability + "]";
}
//认为名字一样,即对象相同,则要重写hashCode()和equals(Object obj)
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public static void main(String[] args) {
Student stu1=new Student("唐僧",200);
Student stu3=new Student("唐僧",200);
Student stu2=new Student("悟空",600);
stu1.study();
stu1.study();
stu2.study();
System.out.println(stu1.toString());
System.out.println(stu2.toString());
System.out.println(stu1.equals(stu3));//比较这两个对象的内容
}
}
六、建一个老师类
public class Teacher {
private String name;
private int ability;
private Student[] student;
}
七、建一个聪明学生类继承自学会类
public class CleverStudent extends Student{
public CleverStudent(String name, int age) {
super(name, age);
}
@Override
public void study() {//聪明学生的学习效率是普通学生的2倍
//super.study();
//super.study();
ability+=2;
}
public void study(int s) {//重载方法,聪明学生还可以自己提高能力
ability+=s;
}
}
上一篇: 面试题:编写一个截取字符串的函数
下一篇: Socket编程总结(1)
推荐阅读
-
[python] 在 python2和3中关于类继承的 super方法简要说明
-
给Asp.Net初学者的关于继承和多态性的例子
-
详细对比php中类继承和接口继承
-
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
-
乐字节Java反射之二:实例化对象、接口与父类、修饰符和属性
-
【java基础】面试常见问题:类和对象,封装继承多态,final关键字,static关键字,类加载过程,双亲委派模型
-
关于angular js_$watch监控属性和对象详解
-
python面向对象(继承、父类、super()、多重继承、多态、(类、实例)属性和方法)
-
关于Object类中的wait()和notify()方法实现生产者和消费者模式
-
Java基础知识(三)面向对象、类和对象、封装继承多态、构造方法、内部类、包装类