【Java学习笔记】继承,代码块和关键字

.形式参数的问题:

   基本数据类型作为形式参数:形式参数的改变,不影响实际参数

   引用类型作为形式参数,会直接影响实际参数

class Student{

public void show(){

System.out.println("好好学习,天天向上");

}

}

class StudentDemo{

//形式参数是引用类型

public void method(Student s){//告诉我们:形式参数是一个类名的情况下,实际参数要的就是该类的具体对象!Student s = new Student();

s.show() ;

}

}

//测试类

public class Test {

public static void main(String[] args) {

//1) StudentDemo sd = new StudentDemo() ;

sd.method(new Student() ;

}

}

//2)//创建StudentDemo的对象

StudentDemo sd = new StudentDemo() ;

Student s = new Student() ;

sd.method(s) ;

}

}

二.制作文档说明书

1.私有化成员方法

public class ArrayTool {

//构造私有化,不让外界创建对象

private ArrayTool(){

}

此时给ArrayTool类中的成员方法添加static修饰,然后用类名直接调用

ArrayTool.printArray(arr) ;

2.使用API文档

打开API文档

显示---->搜索你需要学的类:Scanner/Math

需要看当前的类是哪一个包下的,如果是java.lang不用导包,其他都需要导包

需要看该类的

 

字段摘要-------->成员变量

构造摘要------->构造方法

方法--------->成员方法

3.调用程序

package 制作文档说明数_版本2;

/**

 * @author Apple

 * @version V1.0

 * 这是一个数组工具类,提供了一些方法

 * */

public class ArrayTool {

//构造私有化,不让外界创建对象

private ArrayTool(){

}

/**

 * 这是一个查找数组中元素第一次出现的索引的方法

 * @param

 * arr :需要查找的数组

 * @param

 * value:需要被查找的元素

 * @return

 * 如果找到,输出该元素对应的索引;如果找不到,返回-1

 *

 * */

public static int getIndex(int[] arr,int value){

//定义一个index变量

int index = -1 ;

for(int x = 0 ; x < arr.length; x ++){

if(arr[x] == value){

index = x ;

break ;

}

}

return index ;

}

}

//测试类

public class ArrayDemo {

public static void main(String[] args) {

//定义数组,静态初始化

int[] arr = {25,89,75,30,63} ;

//查找数组中的元素第一次在数组中出现的索引!

int index = ArrayTool.getIndex(arr, 75) ;

System.out.println("index:"+index);

}

}

4.制作文档说明书

 需要创建一个数组工具类:ArrayTool

 需要给每一个方法添加文档注释

 制作文档说明书:

 使用命令:javadoc -d 目录名 -author -version ArrayTool.java

三.Math方法应用

1.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

public static double random()返回带正号的 double 值该值大于等于 0.0 且小于 1.0,[0.0,1.0),永远接近1.0返回值是一个伪随机选择的数。

2.应用 猜数字小游戏

public class MathTest {

public static void main(String[] args) {

//取一个随机数,0-100之间

//我们要猜的数据

int number = (int) (Math.random()*100 + 1);

while(true){

//采用键盘录入数据

Scanner sc = new Scanner(System.in) ;

//接收并录入数据

//用户输入的数据

System.out.println("请您输入一个数字:");

int guesssNumber = sc.nextInt() ;

if(guesssNumber > number){

System.out.println("bigger");

}else if(guesssNumber<number){

System.out.println("smaller");

}else{

System.out.println("right");

break ;

}

}

}

}

四.Static关键字

1.static关键字的特点:态的,共享的,被共用的!可以减少代码

随着类的加载而加载,优先于对象存在!

static修饰的,在内存中只加载一次!但是优先级最高

2.应用

package practice1;

class Person{

//成员变量

String name;

int age;

static String country;

//有参构造

public Person(String name,int age){

this.name=name;

this.age=age;

}

public Person(String name,int age,String country){

this.name=name;

this.age=age;

this.country=country;

}

//成员方法

 public void show(){

 System.out.println(name+age+country);

 }

}

public class Practice3 {

public static void main(String[] args) {

//构造方法

Person p1 = new Person("q",25,"c");

p1.show();

Person p2 =new Person("s",19);

p2.show();

}

}

五.成员方法分类

返回值类型:void类型,非void类型

形式参数:有形式参数,空参

4种组合

六.代码块

1.定义和分类

java,{}括起来的代码,代码块

代码块分类:

1)局部代码块:局部位置,用于限定变量的生命周期

2)构造代码块:在类中的成员位置,在执行构造方法之前,必须先执行构造代码块中的内容

作用:用来将多个构造方法中相同的代码放进来,给对象进行初始化!

3)静态代码块:在类中的成员位置,static{},静态代码在类中加载一次!

2.面试题:

造代码块,静态代码块,构造方法,的优先级?

:静态代码块>构造代码块>构造方法

七.匿名对象

1.定义及特点

匿名对象:没有名字的对象

Student s = new Student(); 对象名是s

匿名的对象的格式:new 类名() ;

new Student() ;在实际开发中会经常用到对象,一般情况使用一次,多次使用合适!

匿名对象的好处:省空间,比较方便

2.应用举例

package practice1;

class Student1{

public void show(){

System.out.println("hh");

}

}

class Student2{

public void method(Student1 s1){

s1.show();

}

}

//测试类

public class Practice5 {

public static void main(String[] args) {

 //一般方法   

Student1 s1 = new Student1();

    Student2 s2 = new Student2();

     s2.method(s1);

//匿名对象,实际参数传递:开发中经常使用。链式编程:一步走

     new Student2().method(new Student1());

 }    

}

八.继承

1.继承的概念

将多个类的共性内容抽取为一个独立的类,独立的类和这些类产生关系,继承关系

extends--->class 子类名 extends 父类名{ }

2.继承的好处

1)提高代码的复用性

2)提高了代码的维护性

3)类与类产生了关系

关系:耦合性

类与类产生了关系,这种关系它是多态的前提条件!

java中开发的原则:低耦合,高内聚!耦合:类与类关系,内聚:指的是执行一件事情能力!

 3.继承的特点

Java中继承的特点:

1)java,只支持单继承,不支持多继承

 别的语言,可能会支持多继承(class Zi extends Fu,Monther){}

2)虽然不支持多继承,但支持多层继承!(class Fa extends Grandfather,class Er extends Fa)

3)子类继承父类,只能继承父类中非私有的成员(成员变量/成员方法)

子类继承父类:继承父类所有是成员

 *私有的成员private (成员变量/成员方法)

 *子类继承父类,不能继承父类中构造方法,但是可以通过一个super关键字间接的访问.

4)*子类中的成员变量和父类中的成员变量名称不一致的情况,分别输出!

 *子类中的成员变量和父类的成员变量名称一致的情况:(就近原则)

  首先在子类中局部变量中找,是否有这样变量的值,有就输出;

  找不到,需要在子类的成员位置中找,有就输出,如果没有,

  在父类中的成员位置找,如果有就输出,如果没有,就报错

5)继承关系体现的是一种"is a"的关系:谁是谁的一种,如果存在这这种关系,那么可以放心的使用继承关系,但如果仅仅是部分交集,则不使用继承。

6)子类继承父类,要继承父类中是所有的数据(private修饰外部类不能访问),

子类继承父类,会默认的访问父类中的无参构造方法!

7)继承的初始化:分层初始化:父类先进行初始化,然后子类进行初始化

8)如果在父类没有无参构造方法,会出现什么现象?如何解决? 构造方法的作用:对数据进行初始化!子类的构造方法全部报错!

a.手动给出父类中的无参构造方法

b.子类继承父类,可以通过父类中有参构造,间接访问,在子类中的构造方法第一句话:super("传参");

c.子类中的有参构造,第一句话:this():访问当前类中的无参构造方法----->间接访问父类中的有参构造this()/super(" "); 要写的话必须写在第一句话:防止父类进行多次初始化!

4.thissuper关键字

成员变量:

this.成员变量:访问拿到是本类的成员变量 super.成员变量:访问的是父类中的成员变量

成员方法:

this.成员方法():访问的是本类中的成员方法 super.成员方法():访问的是父类中的成员方法

构造方法: his()/this("");访问的是当前类的构造方法

 * super()/super("");访问的是父类中的够主方法

 * */

class Father4{

//父类的成员变量

public int num = 10;

}

class Son4 extends Father4{

//子类中的成员变量

public int num = 20 ;

//成员方法

public void show(){

int num = 30 ;

System.out.println(num);

System.out.println(this.num);//当前类的成员变量

System.out.println(super.num); //调用的是父类的成员变量

}

}

 

//测试类

public class ExtendsDemo5 {

public static void main(String[] args) {

//创建对象

Son4 s= new Son4() ;

s.show() ;

}

}  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值