Java(三)面向对象上篇


类和对象

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高明爱圣子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值