首页 > 代码库 > 抽象和封装

抽象和封装

1.从现实抽象出类的步骤
第一:找出分类(分析出类)
第二:找出类的特征(分析类的相关属性)
第三:找出类的行为(分析类的方法)
2.常量(经常出现的变量值)
语法:piblic static final 变量名 = 变量值;
注意:变量名的所有字母都大写,多个单词都用下划线(_)分隔。
例:public static final SEX_MALE ="Q仔";

常量的访问方式:类名.常量名;
3.构造方法(特殊方法,用来创建对象)
3.1语法:public 类名(参数列表){
//方法体;
}
3.2使用
类名 对象 = new 构造方法名(参数);
例:Dog d = new Dog();
3.3构造方法的使用
a.创建对象
b.初始化值(属性值)
3.4构造方法和普通方法的区别
a.构造方法没有返回值类型(return...)
b.构造方法的方法名是类名,普通方法可以任意取
c.构造方法调用:new 构造方法名(参数);
普通方法的调用: 对象名.方法名(参数);
注意:当你没有写构造函数时,java会提供默认的无参构造函数
例:Public Dog(){
}
4.方法重载
4.1方法重载:方法名一样,参数列表不一样
注意:重载与返回值类型和访问修饰符无关
5.static和final
static:静态的
用static 修饰的属性,直接可以类名.方法名访问
final:最终的
用final修饰的属性,它的值初始化后,不能再改变
static.非private修饰 非static private修饰
属性
注意:static 不能在方法中修饰局部变量
补充:后++,先把本身的值作为表达式的值,然后本身+1
例:i++;
前++,先本身+1,然后再把值作为表达式的值
例:++i;

6.封装
6.1封装:隐藏类内部实现细节
6.2步骤:
第一步:将属性私有化。
第二步:提供getter/setter方法(getXxxx(),setXxxx()),
第三步:在getter/setter中加入控制语句
6.3this关键词
this:表示当前对象
调用属性:this.属性名
调用方法:this.方法名();
this();表示调用构造函数
注意:this(),必须写在构造函数的第一行
7.继承(extends)
7.1继承:遗传
7.2语法
public class 子类 extends 父类{
}
例:public class Dog extends Pet{
}
7.3继承的特点
a.子类可以继承父类的非私有的属性和方法
b.不能继承构造方法
c.继承默认权限修饰符的方法和属性,子类和父类必须在同一个包中
7.4 super(父类)
super.属性名 表示访问父类的属性
super.方法名(参数); 表示访问父类的方法
super(参数) 表示访问父类的构造函数
注意:super()访问父类构造函数时,必须写在第一行

8.抽象类(abstract)
8.1 抽象类
语法:public abstract class 类名{};
8.2抽象方法
语法:public abstract 返回值类型 方法名(参数列表);
例:public abstract void print();
注意:抽象方法有abstract修饰,并且抽象方法没有方法体
8.3抽象类和抽象方法的特点
a.都用abstract修饰
b.抽象方法没有方法体
c.抽象类不能实例化
并且继承抽象类的子类都必须重写抽象类中的所有抽象方法

注意:1.抽象类中不一定有抽象方法
2.含有抽象方法的类,一定是抽象类(接口)
9.重写
9.1重写就是子类重写定义父类的方法
9.2.重写规则
a.方法名和参数列表相同
b.修饰符访问权限子类和父类相同或者比父类大
c.返回值类型子类和父类相同(或者是父类的返回值的子类)
d.异常跟父类相同或者范围更小

一般:重写时,子类的东西都要与父类保持一致
10.final
final修饰的类不能被继承
final修饰的方法不能重写
final修饰
//自动类型转换
char c= 10;
int a = c;
//强制类型转换
int a = 10;
char c = (char)a;
//向上转型
Dog d = new Dog( );
Pet p = d;
//向下转型
Pet p = new Dog();
Dog d = (Dog) p ;

抽象和封装