方法的定义
方法作用
节省重复代码编写,分工合作
格式
修饰符 返回值 方法名(参数列表){
方法体
}
public void show(){
System.out.println{"这是一个方法"}
}
public class method {
public static void main(String[] args) {
// 普通数组遍历
int[] arr1= {1,2,3,4};
for(int i=0;i<arr1.length;i++) {
System.out.println(arr1[i]);
}
System.out.println("=========================");
int[] arr2= {10,9,8,7,6,5};
for(int j=0;j<arr2.length;j++) {
System.out.println(arr2[j]);
}
//调用自定义遍历数组的方法
goThrougharr(arr1);
goThrougharr(arr2);
}
//自定义方法遍历数组
public static void goThrougharr(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
System.out.println("==============");
}
}
方法重载
在同一个类中出现了方法名相同,参数列表不同的方法时,我们称之为方法重载
例如:
public int add(int a, int b){
return a+b;
}
public double add(double a, double b){
return a+b;
}
public class Overloaded {
public static void main(String[] args) {
// 方法重载
int a=10;
int b=5;
int sum1=add(a,b);
System.out.println(sum1);
double c=13.5;
double d=16.5;
double sum2=add(c,d);
System.out.println(sum2);
}
public static int add(int a, int b) {
return a+b;
}
public static double add(double a, double b) {
return a+b;
}
}
面向对象
- 面向对象:把事情交给对象去完成
- 面向过程:所有的事情自己亲自去完成;
类与对象
类:模板,一类实物。静态的属性,动态的是方法。
比如:学生,姓名、年龄是属性,学习,睡觉时方法。
对象:类的具体实现,比如张三、李四都是学生类的实现
定义类
public class student { //类
String name; //类的属性
int age;
public void study(String course, int time) { //类的方法
System.out.println(name+"学习"+course+time);
}
public void sleep(String place) {
System.out.println(name+"在"+place+"睡觉");
}
}
创建对象调用类的方法和属性
创建对象格式:对象名= new 类名();
调用属性:对象.属性名称=值;
调用方法:对象.方法名(参数)
输出对象:打印的是地址值
public class CallClass {
public static void main(String[] args) {
// 创建对象并调用属性和方法
Student s1=new Student();
s1.name="张三";
s1.age=23;
System.out.println(s1.name);
System.out.println(s1.age);
s1.study("English", 20);
s1.sleep("教室");
}
}
构造方法
作用:创建对象,给成员变量赋值,如果不填写任何构造方法,java会提供一个空参构造,如果写了任意构造方法,将不再提供空参构造。
格式:
publice 类名(){
//无参构造
}
public 类名()(String name,int age){
//有参构造
this.anme=name;
this.age=age;
}
实例:
public class Student {
String name; //类的属性
int age;
public Student() {
//无参构造
}
public Student(String name,int age) {
//有参构造
this.name=name;
this.age=age;
}
}
调用
public class CallClass {
public static void main(String[] args) {
//构造方法
//调用空参构造
Student s1=new Student();
//调用有参构造
Student s2=new Student("李四",17);
System.out.println(s1.name+"=========="+s1.age);
System.out.println(s2.name+"=========="+s2.age);
}
}
输出结果:
null0
李四17
成员变量和局部变量
定义位置:成员变量在类中方法外定义,局部变量在方法内或者方法参数或语句内定义
范围:成员变量本类中所有方法都能使用,局部变量:当前所属的区域(方法或语句)
this关键字
this关键字代表的是本类对象,调用的就是成员属性(相当于python中的self)
static关键字
作用:无需创建对象直接用类名点的方式可以调用
可以使用在方法和变量
特点:静态智能直接访问静态
public class Teacher {
String name; //非静态属性
static int age; //静态的属性,不需要创建对象可以直接用类名点的方法调用
public void eat(){ //非静态方法
System.out.println("Teacher is eating");
}
public static void sleep() { //静态方法,不需要创建对象可以直接用类名点的方法调用
System.out.println("Teacher is sleeping");
}
}
调用
public class CallTeacher {
public static void main(String[] args) {
// static关键字
//不创建对象的情况下直接调用非静态属性或方法
Teacher.age=30;
Teacher.sleep();
System.out.println(Teacher.age);
//非静态属性或方法,必须创建对象后才能调用
Teacher t1=new Teacher();
t1.name="Mr zhang";
t1.eat();
System.out.println(t1.name);
}
}
修饰符

封装
定义:封装,即不关注对象的属性和实现细节,仅对外公开接口,控制程序中属性的读和写的访问级别。
简单理解:提高了代码的阅读性,提高了代码可维护性,无需关注内部实现,只需要调用即可。
get/set方法
- 封装
public class Phone {
private String brand; //定义私有属性
private String price;
//封装私有属性
public void setBrand(String brand) {
this.brand=brand;
}
public String getBrand() {
return this.brand;
}
}
- 调用
public class CallPhone {
public static void main(String[] args) {
// 调用封装
Phone p= new Phone();
//因为对属性进行了私有化的封装,因此无法直接用点属性的方式直接调用
//此时必须通过set方法设置属性值,并用get方法调用属性值
p.setBrand("华为"); //通过set方法设置属性
String myphone=p.getBrand();//通过get方法获得属性
System.out.println(myphone);
}
}
继承
- 继承:子承父业
- java 两个类之间通过extends关键字描述父子关系,子类便可拥有父类的公共方法和公共属性
- 优点:提高了代码复用性,代码的维护性更高
- 继承的格式: extend 父类名称
定义父类
public class FatherClass {
public String name; //子类只能继承父类公共属性或方法
private int age;
public void canInherit() {
System.out.pringln("公共方法可以继承");
}
private void canotInherit() {
System.out.println("私有方法不可以继承");
}
}
定义子类
package com.darlyl.inherit;
public class SonClass extends FatherClass{ // extends 父类名,指明此类事继承父类的属性和方法
//不定义属性及方法,仅继承父类的属性和方法
}
调用
public class CallSon {
public static void main(String[] args) {
// 调用子类,验证是否继承了父类的属性和方法
SonClass son1=new SonClass();
son1.name="张三 ";
System.out.println("son1.name");
son1.canInherit();
}
类继承的特点
子类不能继承父类的private成员(属性,方法)
类与类智能单继承,多层继承
一个类如果不继承任何类,自动继承Object类,Object是所有类的祖宗;
先出事话父类在初始化子类。
super关键字
super:代表父类对象,在子类中不用new创建父类对象,直接用super代表父类对象调用父类属性或方法;
public class SonClass extends FatherClass{ // extends 父类名,指明此类事继承父类的属性和方法
public void hello() {
System.out.println();
super.canInherit();//canInherit是父类中的方法
}
}
super(…):只能出现在构造方法第一行,super(…)调用父类构造
当父类构造是空参时用super(),默认情况是调用父类无惨的。所有时候不写;
当父类构造是有参时用super(参数)
定义父参空参构造
public class FatherClass {
public String name; //子类只能继承父类公共属性或方法
private int age;
public FatherClass() {
System.out.println("这是父类的空参构造");
}
}
子类调用父类空参
public class SonClass extends FatherClass{ // extends 父类名,指明此类事继承父类的属性和方法
public SonClass() {
super(); //代表调用父类的空参构造,此语句只能写在构造函数的最前面
}
}
主函数实例化子类,
public class CallSon {
public static void main(String[] args) {
// 调用子类,验证是否继承了父类的属性和方法
SonClass son1=new SonClass();
}
}
定义父类有参构造
public class FatherClass {
public String name; //子类只能继承父类公共属性或方法
private int age;
public FatherClass(String name, int age) {
System.out.println("这是父类的有参构造");
this.name=name;
this.age=age;
}
}
子类调用父类有参构造
public class SonClass extends FatherClass{ // extends 父类名,指明此类事继承父类的属性和方法
public SonClass() {
super("王五",30);
}
}
创建对象
public class CallSon {
public static void main(String[] args) {
// 调用子类,验证是否继承了父类的属性和方法
SonClass son1=new SonClass();
}
}
方法重写
重写:父类和子类出现了一模一样的方法
作用:对父类方法进行升级或者改造
定义父类方法
public class FatherClass2 {
public String name; //子类只能继承父类公共属性或方法
private int age;
public void canInherit() {
System.out.println("公共方法可以继承 ");
}
private void canotInherit() {
System.out.println("私有方法不可以继承");
}
}
子类重写父类方法
public class SonClass2 extends FatherClass2{ // extends 父类名,指明此类事继承父类的属性和方法
public void canInherit() {
//对父类方法的升级改造,放弃父类方法,完全重写
System.out.println("对父类继承方法的重写 ");
//在父类方法基础上补充内容
super.canInherit();
System.out.println("在父类的基础上进行改造 ");
}
}
创建子类对象,并调用子类方法
public class CallMain {
public static void main(String[] args) {
SonClass2 son2= new SonClass2();
son2.canInherit();
}
}

768

被折叠的 条评论
为什么被折叠?



