Java面向对象基础-4

知识点:

       综合案例

一、综合案例

1.1 练习 1:设计汽车示例

创建 Java 工程: DAY05
创建包: cn.tedu. oopextends
创建类: Test1_ExtendsDesignCar.java
package cn.tedu.oopextends;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午4:41:34
*/
/**本类用于测试继承设计汽车综合案例*/
//分析:
//提取共性:生成汽车父类
//属性:颜色 型号
//方法:启动行为 停止行为
//具体事物:宝马汽车 奥迪汽车—继承汽车父类,享有父类的共有属性和方法
public class Test1_ExtendsDesignCar {

	public static void main(String[] args) {
		//3.1创建父类对象进行测试
		Car c = new Car();
		c.run();
		c.stop();
		//3.2创建子类对象进行测试
		BMW b = new BMW();
		b.run();
		b.stop();
		//3.3创建子类对象进行测试
		Audi a = new Audi();
		a.run();
		a.stop();
	}

}
//0.抽取共性来创建汽车父类
class Car{
	//定义属性--特征
	String bround;//汽车品牌
	String color;//汽车颜色
	//定义方法--功能
	public void run() {
		System.out.println("汽车启动");
	}
	public void stop() {
		System.out.println("汽车停止");
	}
}
//1.创建宝马汽车类,继承汽车类,继承后,子类具有父类的功能
class BMW extends Car{
	//4.如果想要修改父类原有的功能:--方法的重写
	//4.1重写后,父类的原有功能没有备修改,改的是子类自己的功能
	public void run() {
		//4.2 super应用在子类中,表示父类对象的一个引用Car super = new Car();
		super.run();
		System.out.println("BMW汽车启动....起步快!");
	}
}
//2.创建奥迪汽车类,继承汽车类,继承后,子类具有父类的功能
class Audi extends Car{
	public void stop() {
		System.out.println("Audi汽车停止...刹车灵!");
	}
}


二、static

2.1 概念

        是 java 中的一个关键字
        用于修饰成员(成员变量和成员方法)

2.2 特点

        1) 随着类的加载而加载,静态资源也叫做类资源
        2) 只加载一次,就会一直存在,直到类消失就一起消失了
        3) 优先于对象加载
        4) 被所有对象所共享
        5) 可以直接被类名调用

2.3 练习 2:static 入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oopstatic
创建类: Test2_ StaticDemo.java
package cn.mbh.oopstatic;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:00:48
*/
/**本类用于测试static静态的入门案例*/
public class Test2_StaticDemo {

	public static void main(String[] args) {
		//3.创建对象进行测试
		/**3.静态资源可以通过类名直接调用*/
		/**4.静态资源是优先于对象加载的,比对象先加载进入内存,没对象也可以直接被类名调用*/
		Student s =	new Student();
		s.study();
		//4.通过类名直接调用静态资源进行测试
		System.out.println(Student.name);
		Student.study();
		//5.测试多个队形访问静态资源
		/**5.静态资源可以被多个对象共享*/
		Student s2 = new Student();
		System.out.println(s2.name);
		System.out.println(Student.name);
	}

}
//1.创建Student类
class Student{
	//2.定义属性与方法
	/**1.使用static关键字可以将普通资源修饰成静态资源*/
	/**2.static可以用来修饰成员变量/方法,一般写在权限修饰符之后*/
	static String name = "韭菜妃子";
	static public void study() {
		System.out.println("别闹,我学java呢~");
	}
}



2.4 练习 3:static 静态调用关系

创建 Java 工程: DAY05
创建包: cn.tedu. oopstatic
创建类: Test3_ Static1.java
package cn.mbh.oopstatic;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:14:40
*/
/**本类用于测试静态的调用关系*/
//总结:
//1.静态只能调用静态资源
//2.非静态既可以调用静态,也可以调用非静态
public class Test3_Static1 {

	public static void main(String[] args) {
		

	}

}
//1.创建Teacher类
class Teacher{
	//1.1定义普通资源
	String name;
	public void teach() {
		/**1.普通资源能否调用静态资源?--可以!!!*/
		eat();//普通资源可以调用静态方法
		System.out.println(age);//普通资源可以调用静态属性
		System.out.println("teach()....");
	}
	//1.2定义静态资源
	static int age;//定义静态属性
	static public void eat() {//定义静态方法
		/**2.静态资源能否调用普通资源?--不可以!!!*/
		//System.out.println(name);
		//teach();静态方法不可以调用普通方法
		System.out.println("eat()....");
		/**3.静态资源能否调用静态资源?--可以!!!*/
		System.out.println(age);//静态资源可以调用静态属性
		study();//静态资源可以调用静态方法
	}
	public static void study() {
		System.out.println("study()....");
	}
	
}


三、静态代码块、构造代码块、局部代码块

3.1 静态代码块格式

static {}
静态资源随着类的加载而加载,并且只被加载一次,一般用于项目的初始化

3.2 三种代码块的比较

        1) 静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
        2) 构造代码块:在创建对象时会自动调用,每次创建对象都会被调用,提取构造共性
        3) 局部代码块:方法里的代码块,限制局部变量的范围

3.3 练习 4:几种代码块的关系

创建 Java 工程: DAY05
创建包: cn.tedu. block
创建类: Test4_Block2.java
package cn.mbh.block;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:23:38
*/
/**本类用于测试代码块之间的关系*/
//1.代码块之间的执行顺序:静态代码块 --> 构造代码块 --> 构造方法 --> 局部代码块
//2.为什么是这样子的顺序呢?
//3.原因:
//3.1)静态代码块优先于对象加载,是随着类的加载就会第一时间加载进入内存,并且一直存在
//3.1.1)专门用来完成一些需要第一时间加载并且只记在一次的资源
//3.2)构造代码块是在创建对象时才会触发,专门用来提取构造方法的共性
//3.3)局部代码块是在方法调用时才会触发,专门用来控制变量的作用范围
public class Test4_Block2 {

	public static void main(String[] args) {
		//7.创建对象进行测试
		/**1.在创建对象前,会自动执行静态代码块,而且此代码块只加载一次*/
		/**2.在创建对象时,会自动调用构造代码块和构造方法*/
		Person p = new Person();
		/**3.当调用方法时,如果方法中有局部代码块,才会触发局部代码块*/
		p.study();
		System.out.println("-----------------我是一个无情的分割线-----------------------");
		//8.再创建一次对象进行测试
		Person p2 = new Person();//再去创建对象,静态代码块也不会再次加载了
		p2.study();

	}

}
//1.创建Person类
class Person{
	//2.创建静态代码块
	/**位置:类里方法外 + 触发节点:随着类的加载而加载,只加载一次 */
	static {
		System.out.println("我是静态代码块~");
	}
	//3.创建构造代码块
	/**位置:类里方法外 + 触发节点:创建对象时 */
	{
		System.out.println("我是构造代码块");
	}
	//4.创建构造方法
	public Person() {
		System.out.println("我是无参构造方法~");
	}
	//5.创建普通方法
	public void study() {
		System.out.println("我是普通方法~");
		//6.创建局部代码块
		/**位置:方法里 + 触发节点:调用此方法时 */
		{
			System.out.println("我是局部代码块");
		}
	}
}



四、final

4.1 概念

        1) 是 java 提供的一个关键字
        2) final 是最终的意思
        3) final 可以修饰类,方法,成员变量

4.2 特点

        1) 被 final 修饰的类,不能被继承
        2) 被 final 修饰的方法,不能被重写
        3) 被 final 修饰的变量是个常量,不能被改变
        4) 常量的定义形式:final 数据类型 常量名 =

4.3 练习 5:final 入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oopfinal
创建类: Test5_FinalDemo.java
package cn.mbh.oopfinal;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:33:23
*/
/**本类用于测试final的入门案例*/
public class Test5_FinalDemo {

	public static void main(String[] args) {
		//5.创建子类对象进行测试
		Son4 s = new Son4();
		System.out.println(s.name);
		//s.name="打工人";//The final field Father4.name cannot be assigned
		s.eat();

	}

}
//1.创建父类
/**1.final表示最终,可以用来修饰类,那么被final修饰的类无法被继承,也就是没有子类--最终类*/
class Father4{
	//3.创建成员变量
	/**2.final可以修饰成员变量,被final修饰的变量值不可以被修改--常量*/
	final String name = "干饭人";
	//4.创建成员方法
	/**3.final可以修饰成员方法,但是被final修饰的方法是最终实现,子类无法重写*/
	final public void eat() {
		System.out.println("Father4...干它三碗大米饭~");
	}
}
//2.创建子类
class Son4 extends Father4{
	//子类重写父类的eat()
	// public void eat() {//Cannot override the final method from Father4
		// System.out.println("Son4...下雪了去吃火锅吧~");
	// }
}

五、多态

5.1 概念

        多态指同一个实体同时具有多种形式
        它是面向对象程序设计(OOP )的一个重要特征。
        主要是指同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
        好处是:可以把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出 通用的编程,统一调用标准。
        水果有两种形态:水果和苹果,不关心买回来的是苹果还是西瓜,只要是水果就行
class Animal{//1. 定义父类 Animal
        ....
}
class Cat extends Animal{//2. 定义子类 Cat 继承 Animal
        ....
}
main(){
        //3.创建子类对象
        Cat c = new Cat();//小猫是小猫
        Animal a = new Cat();//小猫是小动物
}

5.2 特点

        1) 多态的前提 1:是继承
        2) 多态的前提 2:要有方法的重写
        3) 父类引用指向子类对象,如:Animal a = new Cat();
        4) 多态中,编译看左边,运行看右边

5.3 练习 6:多态入门案例

创建 Java 工程: DAY05
创建包: cn.tedu. oop
创建类: Test6_MoreTypeDemo.java
package cn.mbh.opp;
/**
*@author MBH:
*@version 创建时间:2022年7月10日 下午5:43:12
*/
/**本类用于测试多态的入门案例*/
public class Test6_MoreTypeDemo {

	public static void main(String[] args) {
		//5.创建父类对象进行测试
		Animal a = new Animal();
		a.eat();//小动物Animal吃啥都行~~~
		//6.创建子类对象进行测试
		Cat c = new Cat();
		c.eat();//小猫Cat爱吃小鱼干~~~
		c.jump();
		//!!!7.创建多态对象进行测试
		/**口诀1 : 父类引用 指向 子类对象*/
		/**口诀2 : 编译(保存)看左边,运行(测试)看右边*/
		Animal a2 = new Cat();
		//eat()是使用的父类的声明,但是使用的是子类的实现方式
		a2.eat();//小猫Cat爱吃小鱼干~~~
		/**多态的出现:是为了统一调用的标准,向父类看齐,父类提供的功能才能用,子类特有的功能用不了*/
		//a2.jump();
	}

}
//1.创建父类
class Animal{
	//3.定义父类中的成员方法
	public void eat() {
		System.out.println("小动物Animal吃啥都行~~~");
	}
}
//2.创建子类
class Cat extends Animal{
	//4.重写父类中的方法--对父类的代码做修改
	//重写的规则:方法签名保持一致 + 子类权限修饰符 >= 父类的权限修饰符
	public void eat() {
		System.out.println("小猫Cat爱吃小鱼干~~~");
	
	}
	public void jump() {//8.定义一个子类特有的方法
		System.out.println("小猫Cat跳的老高了~~~");
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Object 是 Java 中的根类,是所有类的父类。所有的 Java 类(除了八个基本类型)都继承于 Object 类,因此可以调用 Object 类的方法。例如:toString()、equals()、hashCode() 等。 ### 回答2: jmu-java-03面向对象基础-object 是一门介绍面向对象编程的基础知识的课程。面向对象编程是一种思想,它的目标是把程序中的各个元素抽象成对象,并通过对象之间的交互实现程序的功能,是现代编程语言的主流之一。在这门课程中,学生将学习到对象的定义、类的概念、封装、继承和多态等基本概念和原则。 在面向对象编程中,对象是指具有特定属性和行为的实体,例如一个人、一辆车、一本书等。对象拥有自己的状态和行为,其行为可以通过方法来实现。类是对象的模板,可以看作是一种具有相似特征和行为的对象的集合。在类中,可以定义属性、方法和构造函数等。封装是面向对象编程的一个重要原则,它通过将对象的内部状态信息封装起来,从而实现了信息的隐藏和保护。 继承是指通过继承父类的属性和方法来创建一个新的子类的机制。子类可以继承并扩展父类的行为,从而实现了代码的重用性和可维护性。多态是指不同对象对同一消息做出不同的响应的能力。多态是面向对象编程中的一种普遍机制,它可以让程序具有更好的灵活性和扩展性。 这门课程将通过理论和实践相结合的方式来教授相关知识和技能。学生将通过编写程序来巩固所学内容,并提高编程能力。本门课程是学习Java编程的基础课程,也是后续Java编程课程的前置课程。具备面向对象编程基础的学生,将更容易掌握高级Java编程知识和技能。 ### 回答3: 面向对象编程(Object-Oriented Programming, OOP)是一种编程方式,它基于对象的概念,强调对数据的封装、继承和多态等特性,从而使得程序的结构更加清晰、易于维护和扩展。 OOP中最基本的概念是对象(Object),它是程序中的一个实体,有其自身的状态(state)和行为(behavior)。在Java语言中,对象由类(Class)定义,类是一组具有相同特征和行为的对象的模板。 类通常由属性(fields)和方法(methods)组成,属性可以理解为数据单元,方法则是实现类的动作。例如,一个人(Person)类可以包含属性如姓名、年龄等,方法如呼吸、吃饭等。 封装(Encapsulation)是OOP中的重要概念之一,它指对类的属性和方法进行隐藏和保护,只能通过类提供的公共接口访问。这样能够保证程序的安全性,同时也能够减少程序的耦合度,便于维护和扩展。在Java语言中,可以通过访问修饰符(private、protected、public)来实现封装。 继承(Inheritance)是另一个重要的OOP概念,它允许一个类(子类)从另一个类(父类)继承属性和方法,并在此基础上进行扩展。这样能够避免重复编写代码,同时也能够保持代码的一致性和可读性。在Java语言中,使用关键字extends来实现继承。 多态(Polymorphism)是OOP的另一个重要概念,它指同一个方法调用在不同情况下会产生不同的行为。在Java语言中,通过方法的重载(overloading)和重写(overriding)来实现多态。 总之,面向对象编程已经成为现代软件开发的主流,它使程序的开发更加清晰和高效,也更加适应复杂应用的开发。在学习Java编程的过程中,理解面向对象编程的基本概念,对于学习Java语言和掌握Java编程技能是至关重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值