七、类和对象
1.类
类是用来对一个实体(对象)来进行描述的,在Java中定义类时需要用到class关键字。类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能、可以干什么,称为类的成员方法。
语法格式:
具体实现如下:
//定义一个手机类
class Mobile{ //类名采用大驼峰命名法
public String color; //颜色
public String size; //尺寸
public String brand; //品牌
public void TakePictures(){ //拍照
System.out.println("拍照功能");
}
public void Call(){ //打电话
System.out.println("打电话功能");
}
public void ListeningToMusic(){ //听音乐
System.out.println("听歌功能");
}
}
2.对象的创建和使用
类是对象必不可少的创建基础,有了类以后,就可以根据类来创建对象,用类类型创建对象的过程,称为类的实例化,在Java中采用new关键字,配合类名来实例化对象。实例化对象需要为对象分配内存、调用合适的构造方法。
public static void main(String[] args) {
Mobile phone=new Mobile(); //通过new实例化对象
phone.brand="华为";
phone.color="白色";
phone.size="六寸";
phone.Call();
phone.ListeningToMusic();
phone.TakePictures();
}
注意:
·new 关键字用于创建一个对象的实例
·使用 . (点)来访问对象中的属性和方法
3.构造方法
构造方法是一个特殊的成员方法,使用来实例化对象的。
构造方法的名字必须与类名相同,没有返回值类型,设置为void也不可以;一般情况下用public修饰;在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次;当我们没有提供任何的构造方法时,编译器会帮我们提供一个不带参数的构造方法。
4.封装
·概念
对外隐藏(private)内部的实现细节,提供一个公有的方法,供类外进行使用。也就是将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互。
·访问修饰符
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java提供了四种访问修饰符,但访问修饰符的控制范围是不同的,如下所示:
访问修饰符名称 | 说明 | 备注 |
public | 可以被任何类访问 | |
protected | 可以被同一包的所有类访问 可以被所有子类访问 | 子类没有在同一包中也可以访问 |
private | 只能够被当前类的方法访问 | |
default(无访问修饰符) | 可以被同一包中的所有类访问 | 如果子类没有在同一包中不能访问 |
public:就像一个人的外貌,谁都可以看见
private:只有自己知道,别人都不知道
default:就像“家(同一个包)丑不可外扬”,只有家里人知道,对于别人就是隐私
八、继承和多态
1.继承
对共性的抽取,以达到对代码的复用。在Java中如果要表示类之间的继承关系,需要借助extends关键字,具体如下:
电脑和手机有共同属性,实现一个电子设备类的继承。具体实现如下:
//ElectronicEquipment.java
public class ElectronicEquipment{
public String color; //颜色
public String size; //尺寸
public String brand; //品牌
public void Chat(){ //聊天
System.out.println("聊天功能");
}
public void ListeningToMusic(){ //听音乐
System.out.println("听歌功能");
}
//Phone.java
public class Phone extends ElectronicEquipment{
void TakePictures(){ //拍照
System.out.println("拍照功能");
}
}
//Computer.java
public class Computer extends ElectronicEquipment{
void KnockCode(){ //敲代码
System.out.println("敲代码功能");
}
}
//TestExtend.java
public class TestExtend{
public static void main(String[] args]){
Phone phone=new Phone;
System.out.println(phone.color);
System.out.println(phone.size);
System.out.println(phone.brand);
phone.Chat();
phone.ListeningToMusic();
phone.TakePictures();
}
}
2.多态
·概念
多态是面向对象的重要特性,多态顾名思义就是多种形态,多态机制在提高了程序的简洁性的同时,提升了程序的可扩展性。
·实现条件
1. 必须在继承体系下
2. 子类必须要对父类中方法进行重写
3. 通过父类的引用调用重写的方法
九、抽象类和接口
1.抽象类
·概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。如:
说明:
·矩形、三角形、园形都是图形,因此和Shape类的惯性应该是继承关系
·虽然图形图Shape中也存在draw的方法,但由于Shape类并不是具体的图形,因此其内部的draw方法实际是没有办法实现的
·由于Shape类没有办法描述一个具体的图形,导致其draw)方法无法具体实现,因此可以将Shape类设计为"抽象类"
2.接口
在Java中,接口可以看做是多个类的公共规范,是一种引用数据类型。接口的定义格式与定义类的格式基本相同,只需将class关键字换成interface关键字,就定义了一个接口,实现如下:
public interface 接口名称{
// 抽象方法
public abstract void method1(); // public abstract 是固定搭配,可以不写
public void method2();
abstract void method3();
void method4(); //在接口中上述写法都是抽象方法,method4(),代码更简洁
}
注意:
1. 创建接口时, 接口的命名一般以大写字母 I 开头
2. 接口的命名一般使用“形容词”词性的单词。