1.面向对象
面向对象的特点:封装、继承、多态、抽象
- 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
- 继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
- 多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
抽象
温馨提示:对象与实例是同一个概念,创建一个对象就是创建一个实例。程序员最不缺的就是对象,想要自己就new一个呗。
2.类
public class A {
//成员属性
private String name;
private int age;
//构造方法,一般用于对象的初始化
A(String name,int age)
{
super();//这个super是默认隐藏的,继承父类的构造方法。
this.name=name;
this.age=age;
}
//toString方法,默认返回哈希值
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//equals方法,判断内存地址是否相等
public boolean equals(Object obj)
{
return (this == obj);
}
public String getName() {//获取名字的接口
return name;
}
public void setName(String name) {//设计名字的接口
this.name = name;
}
public int getAge() {//获取年龄的接口
return age;
}
public void setAge(int age) {//设置年龄的接口
this.age = age;
}
}
注意:
- 类由成员数据(属性)和方法两部分构成,一般用private修饰成员数据用于保护隐私,通过设置get和set方法给用户提供访问的接口,以此来提高安全性。
- 构造方法继承自父类,一般可以通过改写构造方法给一个对象进行初始化
- toString、equals方法都继承自Object类,new一个对象就默认继承了这些方法,可以改写它们实现更多功能。
3.访问控制修饰符
修饰符 | 同类 | 同包 | 子类 | 外部包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
default | √ | √ | ||
private | √ |
4.其它修饰符
- static:静态变量;静态方法;修饰后成为共享数据。
- final: 常量;固定方法;修饰后相当于上锁,不可修改!
- transient: 修饰非静态变量,
- volatile: 修饰非静态变量,
- abstract: 抽象方法;
- synchronized: 只能修饰方法;
5.this与super
- this与super的使用能避免歧义,方便理解代码;
- 读代码时this完全可以替换成本类的类名,super完全可以替换成父类类名!
class Fu{
String name;
int age;
Fu()
{
this.say();//相当于Fu.say();
}
public void say()
{
System.out.println("我是小头爸爸");
}
}
class Son extends Fu{
Son(){
super();//相当于Fu();
}
Son(String name,int age){
this();//相当于Son();
this.say();//相当于Son.say();
this.name=name;//相当于Son.name=name;
this.age=age;//相当于Son.age=age;
}
public void say()
{
System.out.println("我是大头儿子");
}
}
public class A {
public static void main(String[] args)
{
new Fu();
new Son("大头儿子",6);
}
}
运行结果:
我是小头爸爸
我是大头儿子
我是大头儿子
注意:
- this()是调用本类的构造函数,super()是调用父类的构造函数
- 子类永远都不会执行父类方法,执行的是从父类继承或重写的方法。
日出东方,年轻的侠客披上斗篷。 自此,诗酒天涯,琪琚佩剑。