定义类:[修饰符 (public , final , abstract)] class 类名 {
构造器(默认构造函数)
方法 (public , static)
成员变量
修饰符(public , static , private , protected , final) 类型 成员变量名 [=默认值];
例如:public static int a = 3;
protected final string name = "GaoMing";
}
static 修饰表示属于类,而不是某一对象
1.构造方法是对对象的数据进行初始化
2.特点:
方法名和类名相同
没有返回值类型
没有返回值
3.注意事项
如果我们没写构造方法,系统将默认给出无参构造方法
如果我们写了构造方法,系统将不再给出默认无参构造方法
class Student {
private String name;
//public Student() {} //默认生成
public Student(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void show() {
System.out.println("姓名是:"+name);
}
}
class StudentTest {
public static void main(String[] args) {
Student s = new Student();
s.setName("GaoMing");
s.show();
//带参
Student ss = new Student("ShengZi");
ss.show();
}
}
Student p = new Student();
创建了一个Student实例(对象)
实际上产生了两个东西,一个是p对象,一个是Student对象。
实际上p引用变量只是存储了一个地址值,访问的是p所引用对象的成员变量和方法
(Java不允许直接访问堆内存中的对象,仅可使用该对象的引用操作该对象)
特点:
随着类的加载而加载
优先于对象存在
被所有对象共享
可以通过类名调用
(静态,可通过类名调用,也可通过对象名调用)
方法访问特点
普通成员方法
可访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法
静态成员方法
只能访问静态成员变量,静态成员方法
静态只能访问静态
this指针
class Student {
private String name;
private int age;
public void setName(String name) {
//"林青霞"
this.name = name;
}
public String getName() {
return name; //其实这里隐含了this
//return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
同名不同参
public void text(){
System.out.println("无参");
}
public void text(String s){
System.out.println(s+"有参");
}
访问控制
public(公共访问)
default(包访问)
protected(子类访问)
private(当前类访问,私有)
包的理解:Java为了实现对类进行统一的管理和划分
import:导入包
static import导入的是静态成员,而import导入的是类或接口类型。
Java常用包
Java.lang 包含核心类,如String , Math , System , Thread等(系统自动导入此包)
Java.util 包含大量工具类/接口和集合框架类/接口,如Arrays , List , Set等。
Java.net 包含了一些Java网络编程相关的类/接口。
Java.io 包含了一些Java输入输出相关的类/接口。
Java.text 包含一些Java格式化相关的类
Java.sql 包含了JavaJDBC数据库编程的相关的类/接口
Java.awt 包含了抽象窗口工具集相关的类/接口。
Java.swing 包含了Swing图形用户界面编程相关的类/接口。
(详情)
修饰符 class StudentClass extends Student{
//类定义部分
}
Java取消了C++的多继承特征,即每一个类最多有一个直接父类
错误示范:
class StudentClass extends Base1,Base2,Base3{...}
正确示范:
class Fruit extends Plant{...}
class Apple extends Fruit{...}
java.lang.Object 是所有类的父类。
子类扩展了父类,子类是一个特殊的父类。
方法重写注意事项:
A:父类中私有方法不能被重写
B:子类重写父类方法时,访问权限不能更低
建议一样即可。
C:父类静态方法,子类也必须通过静态方法进行重写。
例子:
class Person {
public void show() {
System.out.println("show person");
}
private void show2() {
System.out.println("show2 person");
}
public void show3() {
System.out.println("show3 person");
}
public static void show5() {
System.out.println("show5 person");
}
}
class Student extends Person {
public void show() {
System.out.println("show student");
}
private void show2() {
System.out.println("show2 student");
}
public void show3() {
System.out.println("show3 student");
}
public static void show4() {
System.out.println("show4 student");
}
}
class PersonDemo {
public static void main(String[] args) {
Student s = new Student();
s.show();
//s.show2();
s.show3();
s.show5();
}
}
由于子类重写方法之后,会覆盖父类方法
因此如果想要在子类调用父类中被覆盖掉的方法
可以使用super限定
public void callOverride(){
super.fly();
//在子类中通过super显式调用父类被覆盖的实例方法。
}
很多时候,我们可能不想让子类修改我的内容。这个时候该怎么半呢?
针对这种情况,java又提供了一个状态修饰符:final。
可以修饰类,成员变量,成员方法。
类: 类被final修饰,说明该类是最终类,不能被继承。
成员变量: 变量被final修饰后,就变成了常量。值不能被修改。
成员方法: 方法不能被子类重写。
多态:同一个对象在不同时刻表现出现的不同状态。
例子:
class Animal {
public void eat() {
System.out.println("动物吃饭");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("狗吃肉");
}
}
class DuoTaiDemo {
public static void main(String[] args) {
//Animal a = new Animal();
//Dog d = new Dog();
//多态
Animal a = new Dog();
}
}
Java类的三大特性:
封装 private,public,protected
继承 extends
多态 增加灵活性
Java(一)环境遍历配置及第一个Java程序
Java(二)基本数据和数组
Java API