Java面向对象

本文介绍了Java作为面向对象语言的基础概念,包括类与对象的关系、面向对象的三大特征:封装、继承和多态。此外还详细解释了Java中的类成员、修饰符、内部类等概念。

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

1、java是面向对象的一种语言,类似C++,small-talk, Object-C, C#, Visual Basic。

面向对象是这些高级语言的一个最重要的概念,有别于面向过程的语言,比如C,汇编。面向对象的语言将所有要处理的逻辑当作不同对象之间的沟通。实现起来就是用class来定义类,然后创建对象。类是对象的定义,对象是类的实例。可以理解为,类为数据类型,对象是变量。有的时候类和对象会混在一起说。在设计的时候,一边说类。

那个简单的类子来说,到动物园里看动物,对于动物,我们可以说是对象,设计的时候可以将动物作为一个类,这个类中包含特性(成员变量)和行为(成员函数)。动物种类的划分可以根据具体的情形来做,比如按照哺乳动物、飞行、爬行、表演、伤害等。它们有共同的特征和行为,也有各自独有的。就用可以理解成类的派生、集成。当然,仔细想想还有重载、接口、虚拟等等。

2、面向对象的三大特征:

2.1  封装:成员函数、成员变量;对外只提供访问接口,隐藏实现;

2.2 继承:扩展。JAVA中只能继承一个父类,可以通过接口来实现类似C++中的多继承。

2.3 多态:重载,不同的实现方法

4、类中的内容
变量(类static变量、成员变量);
初始化程序块(无名函数,可以是static,也可以是非static,当为static时,只调用一次,非static时,没创建一个对象即调用一次,可以做初始化的工作);
构造函数(可以多个,重载);
方法(类static方法,成员方法) ;
接口;
嵌套类;

5、修饰符
public protected 缺省 private
缺省: 类似protected,但不可以从包外方为。protected可以通过集成,在包外子类访问。

6、this:当前对象,用于显示调用该对象的成员,防止隐藏。

supper:父类(对象),防止隐藏。

7、包 package
方便类的管理和访问。不同包,类的名字可以相同。

8、abstract类,仅为扩展而生

9、接口 interface,接口只为implements而生。接口可以继承其他接口。一个类实现接口的时候,需要实现所有的接口成员。

@Override 属于标志断言,让编译器检查重写的类/方法声明是正确的。不写的话也不报错。

10、内部类 (Android开发时,经常用到)
常规内部类:不能包含static成员,初始化时需要先创建外部类的实例。
局部内部类:不能访问定义它的成员中的局部变量。

public class LS05 {

int x =1;
public void doSomething(){
final int y=2;
int z = 3; // can’t be accessed by Inner
class Inner{
int x =3;
void print(){
int x=4;
System.out.println(x);
System.out.println(this.x);
System.out.println(LS05.this.x);
System.out.println(y);
/*
错误:从内部类中访问本地变量z; 需要被声明为最终类型
System.out.println(“z:=”+z);
*/
//System.out.println(“z:=”+z);
}
}
Inner inner = new Inner();
inner.print();
}

public static void main(String[] args){
LS05 outer = new LS05();
outer.doSomething();
}
}

// 4 3 1 2
匿名内部类: 可以实现接口,抽象类,没有名字。可以当参数。例子

public class Dog {

	public interface Pet {
		public void beFriendly();
		public void play();
	}

	public static void main(String[] args){
                /× same as new Dog.Pet(){ ×/
		Pet dog = new Pet(){
			@Override
			public void beFriendly() {
				// do something
			}
			@Override
			public void play() {
				// TODO
			}
		}; // 语句,需加;

		dog.beFriendly();
		dog.play();
	}
}

静态嵌套类:使用static声明,定义的时候需要加上外部类的名字。比如Out.Inner className = new Out.Inner();

 Posted by ian at 04:33  Tagged with: java面向对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值