JAVA基础知识面向对象之 ---- 参数类型与返回值类型、修饰符
参数类型
-
A:基本数据类型作为形参:
当一个方法的形参为基本数据类型时,就传对应的基本数据类型。
-
B:类名作为形参:
当一个方法的形参要一个类 类型,就传一个该类的对象。
public class MyTest { public static void main(String[] args) { Student student = new Student(); int num=2; set(student,num); //调用set方法时就传一个该类的对象 student.show(new Student(),100); ///调用show方法时就传一个该类的对象 System.out.println(student.num); //100 } //set方法的形参要一个类 类型 public static void set(Student student,int num){ student.num=num; } } class Student{ int num=10; //show方法的形参要一个类 类型 public void show(Student student,int num){ student.num=num; } }
-
C:抽象类名作为形参:
当一个方法的形参要一个抽象类 类型,就传一个该抽象类的子类对象。
public class MyTest { public static void main(String[] args) { int num=1; Zi zi = new Zi(); set(new Zi(),num); //调用set方法,就传一个该抽象类的子类对象 zi.show(188); System.out.println(zi.num); // } //set方法的形参要一个抽象类 类型 public static void set(Fu fu,int num){ fu.num=num; } } //抽象类Fu类 abstract class Fu{ int num=100; public abstract void show(int num); } class Zi extends Fu{ int num=10; @Override public void show(int num) { this.num=num; } }
-
D:接口名作为形参:
当一个方法的形参要一个接口类型,就传一个该接口的子类对象。
public class MyTest { public static void main(String[] args) { int num=1; B b = new B(); set(b,num); //调用set方法,传一个A接口的子类对象b System.out.println(b.a); //10 System.out.println(b.NUM); //100 System.out.println(A.NUM); //100 System.out.println(B.NUM); //100 } //set方法的形参要一个接口类型A public static void set(A a,int num){ new B().a=num; a.show(num); } } //接口A interface A{ public static final int NUM=100; void show(int num); } class B implements A{ int a=10; @Override public void show(int num) { this.a=num; } }
-
E:匿名内部类也可作为参数传递
public class MyTest { public static void main(String[] args) { //匿名内部类可以作为参数传递 set(new MyInterface() { @Override public void show() { System.out.println("重写了show方法"); } @Override public void test() { System.out.println("重写了test方法"); } }); MyInterface my= new MyInterface() { @Override public void show() { System.out.println("重写了show方法2222"); } @Override public void test() { System.out.println("重写了test方法2222"); } }; set(my); } public static void set(MyInterface myInterface){ myInterface.show(); myInterface.test(); } } interface MyInterface{ void show(); void test(); }
返回值类型
-
A:基本类型作为返回值类型:
当一个方法的返回值类型 是一个基本数据类型,就返回相应的基本数据类型。
-
B:类名作为返回值类型:
当一个方法的返回值类型 是一个 类 类型,就返回该类的一个对象。
public class MyTest { public static void main(String[] args) { int num = 100; A a = new A(); A a1 = a.getA(num); System.out.println(a.num); // 1 System.out.println(a1.num); // 1 } public static A getAA(A a, int num) { a.num = num; return a; } } class A { int num = 1; //get方法的返回值类型为A, 是一个 类 类型, public A getA(int num) { A a = new A(); a.num = num; // return a; return this; //就返回该类的一个对象 } }
-
B:接口名作为返回值类型:
当一个方法的返回值类型,要一个接口类型,就返回该接口的一个子类对象。
public class MyTest { public static void main(String[] args) { MyClass myClass = new MyClass(); int num=2; MyInterface myInterface = get(myClass, num); myClass.show(109); System.out.println(myClass.num); System.out.println(myInterface.NUM); } //get方法的返回值类型为MyInterface,是一个接口类型, public static MyInterface get(MyClass myClass,int num){ myClass.num=num; return myClass; //就返回该接口的一个子类对象 } } interface MyInterface{ int NUM=100; void show(int num); } class MyClass implements MyInterface{ int num=1; @Override public void show(int num) { this.num=num; } }
-
C:抽象类名作为返回值类型:
当一个方法的返回值类型,要一个抽象类 类型,就返回一个该抽象类的子类对象。
public class MyTest { public static void main(String[] args) { Zi zi = new Zi(); Fu fu = zi.getFu(zi, 109); System.out.println(zi.num); //109 System.out.println(fu.num); //109 System.out.println(zi); System.out.println(fu); } } abstract class Fu { int num = 10; } class Zi extends Fu { //getFu方法的返回值类型为FU,是一个抽象类 类型, public Fu getFu(Fu fu, int num) { fu.num = num; // return new Zi(); return this; //就返回一个该抽象类的子类对象 } }
链式编程:
-
链式编程:当调用完一个方法之后,方法的返回值又是一个对象,那么就可以紧接着再去调用对象的方法
public class MyTest { public static void main(String[] args) { Student student = new Student(); //链式编程 new Student().getStudent(student, 100).show(109); //等价于: //Student student1 = student.getStudent(new Student(), 100); //student1.show(109); System.out.println(student.num); } } class Student { int num = 10; public Student getStudent(Student stu, int num) { stu.num = num; return this; } public void show(int num) { this.num = num; } }
常见修饰符
-
A:分类:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract -
B:权限修饰符的范围:
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y -
C:修饰类的关键字:
权限修饰符:默认修饰符,public
状态修饰符:final
抽象修饰符:abstract
用的最多的就是:public -
D:修饰成员变量的关键字:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
用的最多的就是:private -
E:修饰成员方法的关键字:
权限修饰符:private,默认的,protected,public
状态修饰符:static,final
抽象修饰符:abstract 用的最多的就是:public
-
F:修饰构造方法的关键字:
权限修饰符:private,默认的,protected,public
** -
G:除此以外的组合规则:
成员变量:public static final
成员方法:public static
public abstract
public final
关键字
package关键字:
- A:包的概述: 就是文件夹
- B:包的作用: 用来解决同一个路径下不能存在同名文件的问题(分类管理)
- C:包的划分:按照功能 、按照模块
- D:定义包的格式:package 包名; 例如:package org.westos.demo9;
多级包用.分开即可 - E:定义包的注意事项:
a:package语句必须是程序的第一条可执行的代码
b:package语句在一个java文件中只能有一个
c:如果没有package,默认表示无包名