Java(三)面向对象上篇

目录

  • 类和对象
    • 1. 定义类
    • 2. 构造方法
    • 3. 对象产生以及构造例子
    • 4.对象,引用和指针
    • 5.static关键字和this指针的使用
    • 6.方法重载
    • 7.隐藏和封装
    • 8.package,import,import static
  • 类的继承
    • 继承
    • 继承特点
    • 重写父类
    • super限定
    • final关键字
    • 多态
  • 总结
  • 其他


类和对象

1. 定义类

	定义类:[修饰符 (public , final , abstract)] class 类名 {
			构造器(默认构造函数)
			方法 (public , static)
			成员变量
				修饰符(public , static , private , protected , final) 类型 成员变量名 [=默认值];
				例如:public static int a = 3;
					protected final string name = "GaoMing";
			
	}
	static 修饰表示属于类,而不是某一对象

2. 构造方法

	1.构造方法是对对象的数据进行初始化
	2.特点:
		方法名和类名相同
		没有返回值类型
		没有返回值
	3.注意事项
		如果我们没写构造方法,系统将默认给出无参构造方法
		如果我们写了构造方法,系统将不再给出默认无参构造方法

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();
			}
		}
		  
 	

4.对象,引用和指针

Student p = new Student();
	创建了一个Student实例(对象)
	实际上产生了两个东西,一个是p对象,一个是Student对象。
	实际上p引用变量只是存储了一个地址值,访问的是p所引用对象的成员变量和方法
(Java不允许直接访问堆内存中的对象,仅可使用该对象的引用操作该对象)

5.static关键字和this指针的使用

特点:
	随着类的加载而加载
	优先于对象存在
	被所有对象共享
	可以通过类名调用
		(静态,可通过类名调用,也可通过对象名调用)
方法访问特点
	普通成员方法
		可访问静态成员变量,非静态成员变量,静态成员方法,非静态成员方法
	静态成员方法
		只能访问静态成员变量,静态成员方法
		静态只能访问静态

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;
	}
}

6.方法重载

	同名不同参
	public void text(){
		System.out.println("无参");
	}
	public void text(String s){
		System.out.println(s+"有参");
	}

7.隐藏和封装

	访问控制
		public(公共访问)
		default(包访问)
		protected(子类访问)
		private(当前类访问,私有)

8.package,import,import static

包的理解: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限定

super限定

public void callOverride(){
     
	super.fly();
	//在子类中通过super显式调用父类被覆盖的实例方法。
}

final关键字

很多时候,我们可能不想让子类修改我的内容。这个时候该怎么半呢?
针对这种情况,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

你可能感兴趣的:(笔记,java)