Java基础_基础语法知识7

面向对象

1.使用java提供的帮助文档
使用java提供的jdk帮助文档。(演示)

(1).如何使用帮助文档
A:打开帮助文档
B: 点击显示,找到索引,找到输入框。
C: 知道你要找哪一个?如Scanner()键盘输入,如Math()
D: 看是在哪一个包下面
如果说是在java.lang包下面的类不需要导入(如:math()),别的包都需要导入。
如:Scanner-->import java.util.Scanner;
E: 再简单的看类的解释和说明,注意看这一个类的版本。
F: 在看类的组成
成员变量 字段摘要
构造方法 构造方法摘要
成员方法 方法摘要,注意看参数传入
G: 学习构造方法
有构造方法 就创建对象,调用方法
没有构造方法 成员都有可能是静态的
H: 看成员方法

左边:
是否是静态的:如果是静态的,那么就可以使用类名直接调用该方法
查看返回值类型:需要使用什么来接受,那么就用什么来接受

右边:
看方法名:方法不要写错
参数列表:需要传入什么就给什么传入。

2.代码块

(1).什么是代码块
在java语言中,使用{}括起来的代码被称为代码块,按照其声明和位置的不同,可以分为局部代码,构造代码块,静态代码块
同步代码块。

(2).局部代码块以及其特点
A:在方法中出现
B:一般用于限定变量的生命周期,以及提前释放资源,提高代码使用率。

(3).构造代码块
A:出现位置是类中方法外。
B:在构造方法之前执行

(4).静态代码块
A:静态代码块加了修饰符static
B:一般用于给这一个类初始化
C:类在加载的时候就会执行这一个静态代码块,但是仅仅执行一次,一般用于一些初始化一些参数。

(5).代码块相关案例:
public class Test {

static{
System.out.println("Test的静态代码块");
}

{
System.out.println("Test的构造代码块");
}

public Test(){
System.out.println("Test的构造方法");
}

//测试
public static void main(String[] args) {
System.out.println("这是测试方法");
Test ts = new Test();
}
//输出结果:
Test的静态代码块
这是测试方法
Test的构造代码块
Test的构造方法

3.继承

(1).继承概述
多个类中存在相同的属性和行为的时候,将这一些内容抽取到单独的一个类中,这样别的那几个类就不必要在定义了,只需要
继承这一个类就可以了。

(2).继承的定义结构
class 子类名 extends 父类名{}

//单独写的这一个类被称为父类,继承它的这一个类被称为子类。简单的说就是谁继承,谁就是子类。

(3).继承的好处
A:提高了代码的复用性。
B:提高了代码的维护性。
C:让多个类之间有联系,这是多态的前提。

(4).继承的坏处
A:由于继承中让多个类之间有了联系。这样也就增加了类之间的耦合性。
我们开发需要的是:低耦合,高内聚(类之间联系少一点,一个类能够完成的特定功能多一点)

(5).类的继承的特点
A:java中只支持单继承,不支持多继承,也就是一个类只可以有一个父类。
如:public student extends person(){}

B:java中支持多层继承,可以弥补多继承的缺点
如:class A(){}
class B extends A(){}
class c extends B(){}
这一个时候C既有A的特性,又有B的特性,类似于多继承。

(6).继承中的注意事项
A:子类只能够继承父类中的非私有方法成员(成员方法和成员变量)。
B:子类不继承父类的构造方法,但是可以通过关键字super去访问父类的构造方法。
C:不要以为部分功能而是用继承
D:继承的是指体现的是"is a"的关系,也就是说必须是这一个类型中的一员,尽量要具备所有的特征。
如:学生张三 is a Student,那么这一个时候张三是具备所有的学生类的特点的。

(7).继承中成员变量的关系
子类中的成员变量和父类中名称不一样,这一个时候就是各找个的。
子类中的成员变量和父类中名称一样。
这一个时候这个成员变量的查找顺序是:
A:子类方法的局部范围找,有就使用;
B:子类的成员范围内找,有就使用;
C:父类的成员范围内找,有就使用;
D:如果还是没有,那就不找了,报错。

(8).关键字this和super的区别和应用

A:this和super关键字的区别和使用
this:表示的是当前类对象的引用
super:代表的是父类存储空间的表示(也可以认为是父类对象的引用)

B:super和this关键字的基本使用
访问成员变量:
this.成员变量 super.成员变量

访问构造方法
this(...) super(...)

访问成员方法
this.成员方法 super.成员方法

C:super和this关键字的基本代码使用:
//父类
public class Father {
public int num = 10;
}
//子类以及测试
public class Son extends Father{
public int num = 20;

public void Test(){
int num = 30;
System.out.println("num is:"+num);
System.out.println("成员范围内的num:"+this.num);
System.out.println("父类的num:"+super.num);
}

public static void main(String[] args) {
Son s = new Son();
s.Test();
}
}

//输出结果:
num is:30
成员范围内的num:20
父类的num:10

(9).继承中的构造方法
A:继承中的构造方法
子类中的所有构造方法都会默认访问父类中的空仓构造。
为什么?
因为子类会继承父类中的数据,可能还会使用父类中是数据,所以,初始化之前,一定要先完成父类的初始化。
所以,子类构造的每一条语句都是super(),调用父类的空参构造,默认存在;

B:代码体现:
//父类
public class Father {
public Father(){
System.out.println("这是father的无参构造");
}
}
//子类
public class Son extends Father{
public Son(){
System.out.println("son的构造方法");
}

public static void main(String[] args) {
Son s = new Son();
}
}
//输出结果:
这是father的无参构造
son的构造方法

C:继承中构造方法的使用注意事项
如果说父类中没有构造方法,那么这一个时候子类的构造方法会出现什么情况?
出错!!
如何解决?
a:在父类中添加一个相应的构造方法
b:使用super关键字去调用父类的带参构造
c:子类通过this关键字去调用本类的其他构造方法
子类中一定要有一个区访问了父类的构造方法,否则,无法初始化父类的数据。
this()和super一定要放置在第一行。否则会初始化多次。

D:代码体现
public class Father {
public Father(String str){
System.out.println("这是father的无参构造");
}
}

public class Son extends Father{

public Son(){
//不用super会报错
super("");
System.out.println("son的构造方法");
}

public Son(String str){
//不用super和this()会报错
//this()的实质就是调用了无参的构造,同时会调用father的构造
this();
//super("");
System.out.println("带参构造");
}

public static void main(String[] args) {
Son s = new Son();
}
}

(10).继承中成员方法的关系
如果说父类方法和子类方法名称不一样,那么就是各找个的。
如果说父类方法和子类方法名称一样。
如果说使用子类对象去访问一个方法,首先在子类方法中去查找,有就使用
然后再去父类中去找,有就使用,
如果都没有,那么就报错

(11).方法重写在继承中的应用
什么是方法重写?
方法重写就是子类中出现了和父类方法名称一样的方法声明,也被称为方法覆盖。

使用特点:
如果说方法名称不同,那么就是各用各的。
如果说方法名称相同,那么最终使用的还是子类自己写的方法。

什么时候使用方法重写?
当子类需要使用父类的功能,而子类自己又需要添加一些逻辑关系的时候,我们就可以考虑使用方法重写。
这样父类中的方法特点,我们通过集成就可以获得,同时又可以添加子类自己的逻辑在里面。

代码实现:
public class Father {

public void sign(String str){
System.out.println(str+"有个小油肚");
}
}

public class Son extends Father{

public void sign(String str){
super.sign(str);
System.out.println(str+"爱吃肉");
}

public static void main(String[] args) {
Son s = new Son();
s.sign("小明");
}

}
//输出结果:
小明有个小油肚
小明爱吃肉

方法重写使用注意事项:
父类中的私有方法不可以被重写,这是父类中自己特有的方法,是不会遗传给儿子的。
子类中重写父类方法的时候,访问权限不能够被父类的低(父亲很抠,儿子不可以更抠)。
父类中的静态方法,子类中也必须通过静态方法来重写(特殊)

(12)方法重写和方法重载
方法重写:
英文标识:Override
表示含义:在子类中,出现和父类中一模一样的方法声明的现象。(俩个类)

方法重载:
英文标识:Overload
表示含义:在同一个类中,出现方法名相同,而参数列表不一样的方法声明的现象。(同一个类)

原文地址:https://www.cnblogs.com/nwxayyf/p/10111358.html

时间: 2024-10-28 05:44:56

Java基础_基础语法知识7的相关文章

Java基础_基础语法知识2

1.运算符 (1).什么是运算符 运算符是指对常量和变量进行操作的符号.用于操作我们定义的变量和常量进行处理. (2).运算符的分类 A:算数运算符 B:赋值运算符 C:比较运算符 D:逻辑运算符 E: 位运算符 F:三目运算符 (3).算术运算符 A:'+' a=3,b=4,a+b=7 表示对变量或者常量进行数据的加法运算 B:'-' a=3,b=4,b-a=1 表示对变量或者常量进行数据的减法运算 a=-1 表示该常量数据是一个负数 C:'*' a=3,b=4,a*b=12 表示对变量或者常

Java基础_基础语法知识5

1.二维数组 (1).什么是二维数组 二维数组其实就是一个元素为一维数组的数组. (2).二维数组定义格式 A:二维数组的定义格式 数据类型[][] 数组名称 = new 数据类型[m][n]; m表示这一个二维数组有多少个一维数组.(第一个位置数据) n表示每一个一维数组有多少个元素.(第二个位置数据) 使用举例: int[][] arr = new int[3][2]; //说明: 上述代码定义了一个int类型的二维数组. m=3;表示这一个二维数组有3个一维数组,也就是arr[0],arr

Java基础_基础语法知识8

面向对象 1.final关键字 (1).final关键字意思是最终的,最后的. (2).final关键字可以修饰类,方法以及变量. (3).final关键字修饰类,这一个类就编程最终类,这一个时候最终类不可以被继承. final关键字修饰方法,该方法不能够被重写,以及覆盖. final关键字修饰变量,这一个时候该变量就是一个常量,也就是不可以改变值. (4).final关键字在继承中的使用测试: //父类 public class Father { public int num = 10; pu

Java基础_基础语法知识10

1.形式参数 参数类型 基本类型,如:int float double 引用类型: 类:这一个时候参数需要的是一个该类的对象. 抽象类:需要的是该抽象的类的子类对象. 接口:需要的是该接口的实现类对象. 2.返回值类型 基本类型:就是一般的基本类型(省略) 引用类型: 类:需要返回的是该类对象. 抽象类:返回的是该抽象类的子类对象. 接口:返回的是该接口的实现类的对象. 3.链式编程 所谓的链式编程实质就是对象调用方法,然后反复的调用该对象的方法,所以链式编程每次调用返回的是一个对象. new

2.java学习_基础知识(标识符、常量、变量、运算符)

标识符 定义 在程序中我们自定义的一些名称在编程的过程中,经常需要在程序中定义一些符号来标记一些名称,如包名.类名.方法名.参数名.变量名,这些符号被称为标识符. 组成元素 英文大小写字母 数字0~9 下划线_和美元符号$ 规则 不可以以数字打头,如:4student ,×不可以使用java的关键字,如class不能使用严格区分大小写,如Xxx和xxx,是两个变量 原则 见名知意,驼峰命名 规范 掌握包名多个单词组成时,所有单词都小写.举例:xxxyyyzzz类名和接口名多个单词组成时,所有单词

java变量_基础篇

1.变量的命名: 变量命名的一般规则: 1.字母.数字."$"或"_"符组成 2.不能以纯数字开头 3.严格区分大小写 4.不能使用Java保留字 1 //java基础八大类型 2 //int类型,只能输入整数 3 int x1=10; 4 //short类型,只能输入整数 5 short x2=10; 6 //byte和short的取值范围比较小,而long的取值范围太大, 7 //占用的空间多,基本上int可以满足我们的日常的计算了, 8 byte x3 = 1

JS基础_基本语法

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 8 /* 9 多行注释 10 JS注释 11 多行注释,注释中的内容不会被执行,但是可以在源代码中查看 12 要养成良好的编写注释的习惯,也可以通过注释来对

XXLii_7.21笔记 Linux基础_基础命令

1.用户 Linux总共分两大类用户:管理员用户和普通用户 管理员:UID : 0 超级用户,权限大到无人能敌,能自杀. 普通用户:UID:(1~65535) 权限有限,用于平常维护使用 系统用户:UID(Centos6版本为1~499,Centos7版本为1~999) 普通用户:UID(Centos6版本为500~60000,Centos7版本为1000~60000) 2.终端 终端分为: 虚拟终端(TTY):附加在物理终端之上的以软件方式虚拟实现的终端,配置文件              

Java语言的基础知识

第三章 1.在java源文件编辑器中,选择某个成员变量,然后按住shift+alt+j,Eclipse会自动添加JavaDoc文档注释结构,如果选择的是方法,还会自动添加参数名称. 2.Java语言规定标示符是由任意的字母.下划线.美元符号和数字组成,并且第一个字符不能使数字,标示符不能使java中的保留关键字. 3.在Java语言中允许使用汉字或其他语言文字作为变量名,如int 年龄 =21;在程序运行时不会报错,但建议尽量不要使用这些语言作为变量. 4.java用关键字final来声明常量,