封装
- 包的名称一定要小写
- 包的名称以反域名的写法
- 在static修饰的方法中访问没有用static修饰的成员变量的使用 需要 先创建对象 在调用属性.
- 封装 隐藏一些类的具体细节 ,提供了公开的方法来调用
public static void main(String[] args) {
//封装 隐藏一些类的具体细节 ,提供了公开的方法来调用
System.out.println("请输入领养的类型(企鹅和狗狗):");
Scanner scan = new Scanner(System.in);
String type = scan.next();
if ("狗狗".equals(type)) {
Dog dog = new Dog();
System.out.println("请选择狗狗品种");
dog.type = scan.next();
System.out.println(dog);
}else {
Penguin penguin = new Penguin();
System.out.println("请选择企鹅的名称");
penguin.name = scan.next();
System.out.println(penguin);
}
}
class Penguin{
String name;
@Override
public String toString() {
return "企鹅的名字为"+this.name;
}
}
class Dog{
String type;
@Override
public String toString() {
return "狗狗的类型为" + this.type;
}
}
抽象类
- 有一个抽象方法的类都需要定义成抽象类
- 抽象类中可以定义非抽象方法和属性
- 抽象类是不可以被实例化的
- 没有抽象方法也可以定义抽象类
abstract class Shape{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
abstract double bc();
abstract double area();
public Shape(){
}
public Shape(String name){
this.name = name;
}
}
//正方形
class Square extends Shape{
//边长
double sideLength;
@Override //周长
double bc() {
return this.sideLength*4;
}
@Override//面积
double area() {
return this.sideLength*this.sideLength;
}
public Square(){
}
public Square(String name,double sideLength){
//this.setName(name);
super(name);
this.sideLength = sideLength;
}
}
public static void main(String[] args) {
//Shape shape = new Shape();
Square squ = new Square("aa",10);
double area = squ.area();
System.out.println("squ的名字为"+squ.getName()+",squ的面积为"+squ.area());
final关键字
用final修饰的类 不能被继承
final修饰的方法不能被重写
final修饰变量不可再更改 变成常量