Java学习_Day09

Java第九天学习内容:
1.继承
2.this和super的用法总结
3.抽象
4.综合案例练习

一、继承

关键词:extends
implements 是实现接口的关键词
理解:解决多子类中【共性抽取】的问题,提高了代码的复用性。
在这里插入图片描述

1.继承的格式

public class Father{
	//成员变量;
	//构造方法
	//成员方法
}
public class Son extends Father{
	//成员变量
	//构造方法
	//成员方法
}

2.继承中成员的访问特点
1)成员变量的访问特点
如果欲访问的变量,子类中存在就先访问子类中的这个变量,如果没有就访问父类,如果父类也没有,就报错。
this.成员变量—>指明访问本类的成员变量
super.成员变量—>指明访问父类的成员变量
2).成员方法的访问特点
子类有就先用子类的,子类没有就用父类的,如果父类也没有就报错。
方法重写(复写/覆盖):在子类父类关系中有一模一样的方法。
方法重写的注意事项:
1).@Override:注解,起到标记提示的作用
写在方法上面,起到检测方法是否正确覆盖如果没有就报红提示,其实就算不写,如果方法没问题也能完成对父类相同方法的覆盖
2).重写方法的返回值类型的范围,必须【小于等于】父类返回值类型的范围
3).重写方法的权限修饰符的范围,必须【大于等于】父类返回值类型的范围

public > protected > 默认的(default不用写出来) > private

【小结:实际运用方法重写,只需要和父类写得一模一样就可以了】

方法重写的好处:既能保证父类的方法不变,子类也可以根据自己的需求做不同的实现。

代码案例:

public class Phone{
					public void show(){
						System.out.println("来电显示");
					}
				}
				
				public class NewPhone extends Phone{
					@Override//提示该方法是重写父类的show方法
					public void show(){
						super.show(); //调用父类方法
						System.out.println("显示头像");
						System.out.println("显示姓名");
					}
				}

3)构造方法的访问特点
a:子类所有的构造器(构造方法)都会默认去访问父类的空参构造器
在构造方法的第一行隐含的一句super();访问父类的空参构造方法

b:如果父类没有空参构造器,子类可以通过super(参数);去调用父类的有参构造器

3.this和super的用法总结
在这里插入图片描述
super:引用父类对象
super.成员变量 调用父类的成员变量(用来访问父类被隐藏的成员变量即就是private关键字修饰的成员变量只能被间接访问)
super.成员方法 调用父类的成员方法(调用父类中被重载的方法)
super() 调用父类的空参构造器
super(参数) 调用父类的有参构造器

this:访问(调用)当前类的对象
this.成员变量 访问当前类的成员变量
this.成员方法 调用当前类的成员方法
this() 访问当前类的空参构造器
this(参数) 访问当前类的有参构造器

注意:
不管是 this()、 super() 还是 this(参数)、 super(参数) 只能写在构造方法的第一语句
即super()和this的用法一样的
在构造方法中:
都必须得是第一行,所以二者不可共存
super用法注意:
在子类的构造方法中调用父类构造方法只能访问一次
即子类中:不能同时存在super(),和super(参数)两条语句

4.继承的特点
1)Java只能单一继承
一个儿子只能有一个爸爸
2)Java支持多层继承
爸爸也可以有爸爸
3)一个类可以有多个子类
爸爸可以有多个儿子

二、抽象

关键字:abstract

抽象类和抽象方法

//抽象类(有抽象方法的类,必须是抽象类)
	public abstract class 类名{
		//抽象方法
		public abstract void 方法名(); //没有方法体
		//具体方法
		public void 方法名(){
			
		}
	}

抽象类是干什么用的?
答:抽象类就是用来给子类继承的,限定和约束子类,一个子类继承抽象类必须重写所有的抽象方法。
抽象的注意事项:
1)抽象类不能创建对象即不能直接new对象
2)抽象类中可以有抽象方法,也可以有普通方法(非抽象方法)(含有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法也不只有抽象方法,抽象方法只能存在于抽象类中)
3)子类继承(extends)抽象类,必须重写父类所有的抽象方法
4)如果子类也是抽象类,可以不用重写其父类的抽象方法
类的成员:成员变量+常用方法+构造方法

三、综合案例练习

有乒乓球运动和篮球运动员,还有乒乓球教练和篮球教练
乒乓球运动打乒乓球、篮球运动员打篮球
乒乓球教练教乒乓球,篮球教练教打篮球
使用类和抽象把乒乓球运动、乒乓球教练、篮球运动员、篮球教练

人类
	--教练类
		--乒乓球教练
		--篮球教练
		
	--运动员类
		--品牌球运动员
		--篮球运动员

结构图:
在这里插入图片描述
根类:Person

package com.itheima.Test;

public abstract class Person {
    public String name;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    //抽象方法
    public abstract void eat();
    public abstract void sleep();
}

父类:Coach类

package com.itheima.Test;

public abstract class Coach extends Person {
    public Coach() {
    }

    public Coach(String name) {
        super(name);
    }

    //教学方法
    public abstract void teach();
}

父类:Player类

package com.itheima.Test;

public abstract class Player extends Person {
    public Player() {
    }

    public Player(String name) {
        super(name);
    }

    public abstract void play();
}

实现类1:PingPongCoach

package com.itheima.Test;

public class PingPongCoach extends Coach{
    public PingPongCoach() {
    }

    public PingPongCoach(String name) {
        super(name);
    }

    //重写直接父类的抽象方法
    @Override
    public void teach() {
        System.out.println("教练教的很专业!棒棒哒");

    }
    //重写父类类的抽象方法
    @Override
    public void eat() {
        System.out.println("教练的餐配-->三菜一汤");
    }

    @Override
    public void sleep() {
        System.out.println("教练的每天睡八个小时~");
    }
}

实现类2:PingPongPlay类

package com.itheima.Test;

public class PingPongPlay extends Player {
    @Override
    public void play() {
        System.out.println("乒乓球运动员,爱打乒乓球~~~");
    }

    @Override
    public void eat() {
        System.out.println("我每天吃得很营养!!!");

    }

    @Override
    public void sleep() {
        System.out.println("我每天睡7个小时........");
    }
}

实现类3:BasketBallCoach

package com.itheima.Test;

public class BasketBallCoach extends Coach {
    public BasketBallCoach() {
    }

    public BasketBallCoach(String name) {
        super(name);
    }

    @Override
    public void teach() {
        System.out.println("篮球教练教篮球运动员打篮球");
    }

    @Override
    public void eat() {
        System.out.println("篮球教练的餐配-->四菜一汤");

    }

    @Override
    public void sleep() {
        System.out.println("篮球教练每天睡7个小时.....");

    }
}

实现类4:BasketBallPlay 类

package com.itheima.Test;

public class BasketBallPlay extends Player {
    public BasketBallPlay() {
    }

    public BasketBallPlay(String name) {
        super(name);
    }

    @Override
    public void play() {
        System.out.println("我爱打篮球");
    }

    @Override
    public void eat() {
        System.out.println("我吃肯德基喝牛奶");
    }

    @Override
    public void sleep() {
        System.out.println("每天睡八个小时,中午午休!");
    }
}

测试类:Demo04

package com.itheima.Test;

public class Demo04 {
    public static void main(String[] args) {
        //篮球教练
        BasketBallCoach basketBallCoach = new BasketBallCoach("乔丹");
        System.out.println(basketBallCoach.getName());

        basketBallCoach.eat();
        basketBallCoach.sleep();
        basketBallCoach.teach();
        System.out.println("*****************");
        //篮球运动员
        BasketBallPlay basketBallPlay = new BasketBallPlay("库里");//每个类都有一个空参构造器

        System.out.println(basketBallPlay.getName());
        basketBallPlay.eat();
        basketBallPlay.play();
        basketBallPlay.sleep();

        System.out.println("-------------------------");

        //乒乓球教练
        PingPongCoach pingPongCoach = new PingPongCoach();
        pingPongCoach.setName("刘国梁:");
        System.out.println(pingPongCoach.getName());
        pingPongCoach.eat();
        pingPongCoach.sleep();
        pingPongCoach.teach();
        System.out.println("************************");
        //乒乓球运动员
        PingPongPlay pingPongPlay = new PingPongPlay();
        pingPongPlay.setName("马龙:");
        System.out.println(pingPongPlay.getName());
        pingPongPlay.eat();
        pingPongPlay.play();
        pingPongPlay.sleep();

    }
}

运行结果:

乔丹
篮球教练的餐配-->四菜一汤
篮球教练每天睡7个小时.....
篮球教练教篮球运动员打篮球
*****************
库里
我吃肯德基喝牛奶
我爱打篮球
每天睡八个小时,中午午休!
-------------------------
刘国梁:
教练的餐配-->三菜一汤
教练的每天睡八个小时~
教练教的很专业!棒棒哒
************************
马龙:
我每天吃得很营养!!!
乒乓球运动员,爱打乒乓球~~~
我每天睡7个小时........

子类又叫派生类
父类又叫超类,基类

【构造方法的方法名和类名相同】

Java学习第十天内容链接:
https://blog.csdn.net/LJN951118/article/details/88960563

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark 基础环境是指安装和配置 Spark 所需的软件和硬件环境。Spark 运行需要 Java 环境和 Hadoop 环境,同时也需要配置 Spark 的相关参数,如内存大小、CPU 核数等。在安装和配置好基础环境后,我们才能使用 Spark 进行数据处理和分析。 ### 回答2: Spark是一个快速、可扩展且容错的大数据处理框架,提供了丰富的API和工具,可以处理大规模的数据集。 搭建Spark基础环境包括以下几个步骤: 1. 安装Java:Spark是基于Java开发的,因此首先需要安装Java开发环境。可以从Oracle官网下载并安装适合操作系统的Java版本。 2. 下载Spark:在Apache Spark官网下载最新版本的Spark压缩包,并解压到指定目录。 3. 配置环境变量:将Spark的bin目录添加到系统的环境变量中。这样可以方便地在任意位置运行Spark的命令。 4. 配置Spark集群:如果需要在多台机器上运行Spark应用程序,需要进行集群配置。首先,在每台机器上安装好Java,并将Spark解压到相同的目录。然后,编辑Spark的配置文件,设置集群的主节点和从节点。 5. 验证安装:通过在终端运行spark-shell命令,验证Spark是否正确安装。spark-shell命令会启动一个Scala解释器,并连接到Spark集群。 6. 运行第一个Spark应用程序:编写一个简单的Spark应用程序,如WordCount,用于统计文本文件中单词的个数。将程序保存为Scala文件,并使用spark-submit命令来运行。 以上就是搭建Spark基础环境的主要步骤。搭建好Spark环境后,可以使用Spark提供的丰富API和工具来进行大数据处理和分析,如数据清洗、转换、机器学习等。Spark的功能强大且易于使用,适用于各种大规模数据处理场景。 ### 回答3: Spark是一个快速通用的集群计算系统,它提供了高效的数据处理和分析能力。要运行Spark,我们需要配置和搭建一些基础环境。 首先,我们需要安装Java JDK。Spark运行在Java虚拟机上,因此我们需要安装适当版本的Java开发工具包。通常建议使用Oracle JDK的最新稳定版本,然后设置JAVA_HOME环境变量。 其次,我们需要安装Spark本身。Spark官方网站提供了预编译的二进制发行版,我们可以从网站上下载并解压缩到我们喜欢的位置。然后,我们可以设置SPARK_HOME环境变量,以便在终端窗口中使用Spark命令。 接下来,我们需要选择一个合适的集群管理器来运行Spark应用程序,比如Standalone模式、Hadoop YARN和Apache Mesos等。我们需要根据自己的需求进行选择和配置。例如,在Standalone模式下,我们需要启动一个Spark Master和多个Spark Worker来管理和运行任务。 最后,在运行Spark应用程序之前,我们需要通过编写一个Spark应用程序来使用Spark的功能。Spark提供了Java、Scala和Python等多种编程语言的API。我们可以使用任何一种编程语言来编写应用程序并在Spark上运行。 总之,Spark基础环境搭建包括安装Java JDK、安装Spark本身、选择和配置集群管理器,以及编写Spark应用程序。搭建好这些基础环境后,我们就可以开始使用Spark进行快速、高效的集群计算了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值