JAVA入门(11)--------面向对象基础

本文深入讲解面向对象编程的三大特性:封装、继承和多态,介绍类的声明、成员变量和方法,以及如何通过包避免命名冲突。探讨了方法重载、封装性和访问控制的重要性,静态变量与静态方法的使用,以及静态代码块的作用。

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

11.1 面向对象基础

网上题库    选择  判断   有利于理解

对象也称为实例

 

11.2 面向对象的三个基本特性

1.封装性

把对象内部复杂的内容封装起来,对外部调用者暴露一些简单接口

2.继承性                       

轮船  客轮
一般  特殊
父类子类   
 超类(C#)

                      派生类

C++多继承 ,一个子类可以继承多个父类,容易发生冲突

Java只是单继承,但是可以通过接口实现多继承的概念

 

3.多态性

一个父类可以有多个子类,这些子类继承后,可以修改或覆盖父类的方法,行为和属性

 

11.3 类

1. 类声明和类体(成员变量和成员方法)

[public] [abstract | final] class className [extends superclassName] [impements interfaceNameList] {

        //类体

}


2. 成员变量

就是在类里声明的,但是方法之外的变量

class className{

     [public | protected | private]  [staric] [final] type varibleName  //成员变量

}

static     类变量 共享变量

非static  实例变量 

public class Animal extends Object /*implements I1,I2,I3*/{
	//类体
	
	int age = 0;
	public boolean sex = false;
	private static double weight = 10.0;
	
	
}

 

3. 成员方法

[public | protected | private]  [static | final | abstract]  [native]  [synchronized]

     type methodName(paramList) [throw exceptionList] {

        //方法体

}

(1) public protected private 修饰符用于封装方法

(2)static 用于声明静态方法 ,所以静态方法也称为 类方法

(3)final | abstract 不能同时用 ,final修饰的方法不能在子类中被覆盖;

        abstract用来修饰抽象方法, 抽象方法必须在子类中被实现

(4)native修饰的方法,被称为 “本地方法”;“本地方法”调用本地平台代码(如C   C++编写的代码) ,不能实现跨平台;

(5)synchronized 修饰的方法是同步的,当多线程方式同步方法时,只能串行地执行,保证线程是安全的

 

11.4 包

1. 包作用

提供了一个命名空间,防止类,接口,枚举,注释等命名冲突,

 

2. 包定义

package pkg1 [. pkg2 [.pkg3...]] ;

            //数字开头不合法,加上”a"

 

3. 包引入

 

4. 常用包

1) java.lang 包:  不需要引入

2) java.io包: 提供多种输入/ 输出流类,如:InputStream, OutputStream,Reader,Writer

                                文件管理相关类和接口:File和FileDescriptor类i以及FileFilter接口

3) java.net:进行网络相关操作的类: URL,Socket和ServerSocket

4) java.util包:一些实用工具类和接口,如集合,日期,和日期相关类和接口

5)java.text包:文本处理,日期格式化和数字格式化等相关类和接口

6) java.awt和javax.swing:提供了java图形用户界面开发所需要的各种类和接口

                                            java.awt 提供了基础的,java.swing 提供了高级组件

 

11.5 方法重载

方法名相同,参数列表不同(个数不同或者类型不同)

返回值 不决定 方法是否重载

 

11.6 封装性与访问控制

1. 私有级别 ( private)

它所修饰的成员变量和方法,只能在同一个类

 

2.默认级别 (无修饰符)

所谓的访问成员变量和方法,有两种方式:

一个是通过类或对象调用方式。

一个是通过继承

 

3.保护级别(protected)

在同一个包中与默认级别没有区别;

在不同包中采用继承方式可以访问,

 

 

4. 公有级别 (public)

访问类成员时,在能满足使用的前提下,尽量限制类中成员的访问级别,   私有-------> 默认------> 保护----->公有 

 

 

11.7 静态变量与静态方法

Account(银行账户)类,假设它有三个成员变量:amount(账户金额),interestRate(利率)

和owner(账户名)。amount和owner是因人而异的,但是所有的interestRate是相同的。

所有个体都一样的变量称为 “类变量” 或 “静态变量”, 可理解为共享变量

访问静态变量和静态方法,可以用 类名.xxx  或者  实例名.xxx  (其他语言中不一定可以)

        // 实例变量 账户金额,
	double amount = 0;
	// 实例变量 账户名
	String owner;

	// 静态变量 利率
	static double interestRate = 0.0668;

	// 静态方法
	public static double interestBy(double amt) {
		// 静态方法可以访问静态变量和其他静态方法
		return interestRate * amt;
		// 不可以访问实例变量和实例方法
		// int i = amount;
	}
        // 实例方法
	public String messageWith(double amt) {
		// 实例方法可以访问实例变量,实例方法,静态变量,静态方法
		double interest = Account.interestBy(amt);
		StringBuilder sb = new StringBuilder();
		// 拼接字符串
		sb.append(owner).append("的利息是").append(interest);
		// 返回字符串
		return sb.toString();
	}

总结:1.静态方法可以访问静态变量和其他静态方法,但不能访问实例变量和实例方法;

           2.实例方法可以访问静态变量和其他静态方法,实例变量和实例方法;

 

11.8 静态代码框

静态代码块所在类 第一次使用时调用静态代码块,

静态代码块在程序运行过程中只调用一次,他的作用是用来初始化静态变量的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值