Java学习day11
类与对象的关系
- 类是一种抽象的数据类型,并不能代表某一具体的事物
- 对象是抽象概念的具体实例
//学生类
public class Student {
//属性:字段
String name;
int age;
//方法
public void student(){
System.out.println(this.name+"在学习");
}
}
/*
public class Application {
public static void main(String[] args) {
//类:抽象的,需要实例化
//类实例化会返回一个自己的对象
//student对象就是一个Student类的具体实例!
Student ming = new Student();
Student hong = new Student();
ming.name = "小明";
ming.age = 10;
System.out.println(ming.name + " "+ming.age);
hong.name = "小红";
hong.age = 20;
System.out.println(hong.name + " "+hong.age);
*/
构造器
特点
- 与类名相同
- 没有返回值
public class Person {
//一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器
String name;
//实例化初始值
//1.使用new关键字,必须要有构造器,本质是在调用构造器
//2.用来初始化值
public Person () {}
//有参构造:一旦定义了有参构造,无参就必须显示定义
public Person (String name) {
this.name = name;
}
// alt+insert 自动生成构造器
}
/*
public class Application {
public static void main(String[] args) {
Person per = new Person();
System.out.println(per.name);
}
}
*/
封装
- 改露的露,该藏的藏
- 高内聚:高内聚就是类的内部数据操作细节自己完成,不允许外部干涉
- 低耦合:仅暴露少量的方法给外部使用
- 封装(数据的隐藏)
- 属性私有private,get/set
public class Student {
//属性私有
private String name;
private int id;
private char sex;
private int age;
//提供一些可以操作这个属性的方法
//提供一些public的set、get方法
//get 获得这个数据
public String getName() {
return this.name;
}
//set 给这个数据设值
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
if ( age >0 && age < 120){
this.age=age;
}else {
System.out.println("不合法年龄");
}
}
}
/*
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统的可维护增加了
public class Application {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("yyc");
System.out.println(s1.getName());
s1.setAge(-1);
System.out.println(s1.getAge());
}
}
*/
继承
- 继承的本质是对某一批类的抽象
- extends的意思是“扩展”。子类是父类的扩展
- Java中只有单继承,没有多继承:一个儿子只能有一个爸爸,但爸爸可以有多个儿子
- 在Java中,所有的类,都默认直接或间接继承object类