Java面向对象(2)

本文详细介绍了Java中的面向对象特性,包括包的概念及其命名规则,Scanner的键盘输入,import和静态导入的用法,以及继承、instanceof运算符、方法重写的相关规则。此外,还探讨了Object类的toString方法,"=="与equals的区别,super关键字的使用,封装原则,多态的本质以及Final关键字在变量、方法和类上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中,我们会遇到大量同名的类,通过包我们很容易解决类重名的问题。包对于类,就相当于文件夹对于文件的作用

包名:域名倒着写,再加上模块名
比如我的域名是www.yanshan.cn
那么包可以是cn.yanshan再加上模块名 
注意事项 
1、写项目时都要加包,不要使用默认包
2、com.zy和com.zy.car这两个包是没有包含关系的,是两个完全独立的包,只是逻辑上看起来后者是前者的一部分

常用的包

Scanner从键盘输入

import

java会默认导入java.lang包下所有的类

   

如果导入两个同名的类,只能用包名+类名来显示调用相关类

静态导入

导入Math类的所有静态属性
import static java.lang.Math.*;
导入Math类的PI属性
import static java.lang.Math.PI;

 

继承

1、父类也称作超类、基类、派生类等
2、Java中类只有单继承,没有多继承,接口有多继承
3、子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有属性和方法)
4、如果定义一个类的时候,没有调用extends,则他的父类是:java.lang.Object

  Ctrl+T 查看继承结构

instanceof

instanceof是二元运算符,左边是对象,右边是类;当对象是右面类或子类 所创建对象时,返回ture;否则返回false

方法的重写

我们继承的父类里的方法不适用,那么我们就可以通过重写父类的方法,用自身的行为替换父类的行为

方法的重写需要符合以下要求:
1、方法名、形参列表相同
2、返回值类型和声明异常类型,子类小于等于父类
3、访问权限,子类大于等于父类

 

 

Object类

object类是所有Java类饿根基类,所有的Java对象都拥有object类的属性和方法

toString方法

object类中定义有public String toString(),方法,其返回值是String类型

“==”与equals方法

“==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象
Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑

super父类对象引用 

super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

使用super调用普通方法,语句没有位置限制,可以在子类中随便调用

构造方法第一句总是:super(...)来调用父类对应的构造方法。所以,流程就是:先向上追溯到object,然后在依次向下执行类的初始化块和构造方法,直到当前子类为止

 

package ccn.zy.oo1;

public class TestSuper {
	public static void main(String[] args) {
		System.out.println("开始创建一个ChildClass对象");
		new ChildClass();
	}
}
class FatherClass{
		public FatherClass() {
			System.out.println("创建FatherClass");
		}
}
class ChildClass extends FatherClass{
	public ChildClass() {
		super();
		System.out.println("创建ChildClass");
	}

封装

程序追求“高内聚,低耦合”
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉
低耦合是仅暴露少量的方法给外部使用,尽量方便外部调用

(default表示没有修饰符修饰)

类的属性的处理
1、属性一般使用private访问权限
2、提供相应的get/set方法来访问相关属性,这些方法通畅是public修饰的,以提供对属性的赋值与读取操作(注意:boolean变量的get方法是is开头的)

属性被隐藏起来了,通过一个方法实现对外的控制  set方法和get方法

set方法:

     

get方法:

自动生成set、get方法

多态

多态指的是同一个方法调用,由于对象不同可能会有不同的行为。

多态的要点
1、多态是方法的多态,不是属性的多态
2、多态的存在要有3个必要条件:继承、方法重写、父类引用指向子类对象
3、父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

package ccn.zy.oo1;

public class TestPolym {
		public static void main(String[] args) {
			Animal a=new Animal();
			animalCry(a);
			Dog d=new Dog();
			animalCry(d);
			animalCry(new Cat());
		}
		static void animalCry(Animal a) {
			a.shout();
		}
}
class Animal{
		public void shout() {
			System.out.println("叫一声");
		}
}
class Dog extends Animal{
	public void shout () {
		System.out.println("旺旺旺");
	}
}
class Cat extends Animal{
	public void shout () {
		System.out.println("喵喵喵");
	}
}

 Final关键字

1、修饰变量:变成常量,不能被重新赋值
2、修饰方法:该方法不可以被子类重写,但是可以被重载
3、修饰类:被修饰的类不能被继承
比如:Math,String

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值