一、方法:有无参数,有无返回值,构造函数

无参构造函数:写了无参构造函数,那么程序在运行的时候会自动调用自己写的无参构造函数,如果没有写,在程序运行的时候会自动添加上无参构造函数。

但是有例外情况

构造方法创建方法:

  1. 手写
  2. 自动生成 alt+shift+s

注意:当创建了有参构造函数,最好带上无参构造函数,因为创建了有参构造函数之后,程序就不会自动生成无参构造函数。

变量:

  1. 局部变量:
    在方法中声明的变量称之为局部变量
    作用域:方法内部 从声明开始到本方法结束(先声明后使用)
  2. 类变量:
    在类中声明的变量
    作用域:整个类中都可以访问

约定>配置>编码

职业分类:开发 前端 ui 后台 测试 维护 运维 实施 dba 优化

局部变量和类变量的优先级:

一个方法中既有局部变量,又有类变量,当变量名相同时,则优先级:局部变量>类变量。
如果想要调用类变量,需要加 this 关键字。
this: 本类的变量和方法

方法传参

  1. 基本类型传参
    byte,short,int,long,char,boolean,float,double
    基本类型传参,传的是值,两个变量没有任何关系,只是值的传递。

  2. 引用类型传参
    传递的是对象的地址

注意:只要不是基本类型传参,都是引用类型传参

//Student.java
import java.util.Scanner;import javax.print.attribute.standard.Sides;public class Student {
//  属性String name;  //姓名int age;        //年龄int weight;     //体重//  程序在运行的时候,jvm会自动补充一个无参构造参数,有些情况必须写//   无参构造方法public Student() {}public Student(String name,int age,int weight) {
//      把局部变量的值赋值给类变量this.age =age;this.name = name;this.weight =weight;}//方法public void study() {System.out.println(name+"正在学习");}// 计算两个数的和
//  有参数无返回值public void add(int n1,int n2) {int result = n1+n2;System.out.println("求和,结果是:"+result);}public void add2() {Scanner input=new Scanner(System.in);System.out.println("输入第一个数字:");int n1 = input.nextInt();System.out.println("输入第二个数字:");int n2 = input.nextInt();int result = n1+n2;System.out.println("求和,结果是:"+result);}// 有返回值public int add3(int n1,int n2) {int result = n1+n2;return result;}}
//Test.java
public class Test {public static void main(String[] args) {// TODO Auto-generated method stub//     根据模板 创建两个对象(实例化)
//      创建第一个对象Student stu1=new Student();
//      赋值 给对象的name属性赋值stu1.name="小王";
//      给对象的另外两个属性赋值stu1.age=20;stu1.weight=60;System.out.println("该对象的名字是:"+stu1.name);System.out.println("该对象的年龄是:"+stu1.age);System.out.println("该对象的体重是:"+stu1.weight);
//      调用对象的方法stu1.study();System.out.println("---------------------------------");
//      再创建一个对象Student stu2=new Student();
//      赋值 给对象的name属性赋值stu2.name="小张";
//      给对象的另外两个属性赋值stu2.age=21;stu2.weight=65;System.out.println("该对象的名字是:"+stu2.name);System.out.println("该对象的年龄是:"+stu2.age);System.out.println("该对象的体重是:"+stu2.weight);
//      调用对象的方法stu2.study();}}
//Test2.java
public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stub//        必须实例化对象才可以调用方法Student student = new Student();//       传参student.add(2, 6);//      调用的方法有返回值,所以需要一个变量来接收int result = student.add3(4, 5);System.out.println(result);}}
//Test4.java
public class Test4 {public static void main(String[] args) {// TODO Auto-generated method stub//        实例化对象Student stu = new Student();
//      此时没有有效值//       给对象的属性赋值stu.name = "12dasd";stu.age = 12;stu.weight = 65;System.out.println(stu.name);//       调用有参构造方法Student stu1 = new Student("dsad", 18, 60);System.out.println(stu1.name);}public void method1() {
//      局部变量   作用域,从声明开始到本方法结束
//      System.out.println(money);
//      int money;}}
//Test5.java
public class Test5 {public static void main(String[] args) {// TODO Auto-generated method stubDog dog = new Dog();
//      dog.print();
//
//      Penguni penguni =new Penguni();
//      penguni.print();}
}

二、对象数组

方法重载:在同一个类中,方法名一样,方法参数不一样。这种现象称之为方法重载(只知道有这种情况就行了)。
参数不一样:包含了参数的个数和位置0
一个方法的参数个数是一个,另一个方法的参数个数是两个,是重载。参数个数相同,例如:public void a(int a,double b) 和 public void a(double b,int a) 也是重载。

面向对象 三大特征:封装、继承、多态

//Student.java
public class Student {//    静态变量  全局变量public static String tel;private int age;  //年龄 private String name;public Student() {super();}public Student(int age, String name) {this.age=age;this.name=name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
//Test.java
public class Test {//   求和方法public void calc1(int num) {num=num+1;System.out.println("num:"+num);}//   求和public void calc2(Student student) {
//      student.age++;int age = student.getAge();age++;student.setAge(age);System.out.println("student.age:"+student.getAge());}}
//Test1.java
public class Test1 {public static void main(String[] args) {// TODO Auto-generated method stub//        创建对象Student stu1 = new Student(21, "dssds");Student stu2 = new Student(22, "dssd");Student stu3 = new Student(23, "dss");//        把对象放到数组中//      创建数组Student[] stus = new Student[3];//     向数组中添加内容stus[0] = stu1;stus[1] = stu2;stus[2] = stu3;//      1.输出所有学生的姓名for (int i = 0; i < stus.length; i++) {
//          stus[i]:数组的地i个元素 是个对象System.out.println(stus[i].getName());}//      2.统计学生的平均年龄int sum = 0;double ave = 0;for (int i = 0; i < stus.length; i++) {sum+=stus[i].getAge();}ave = (double)sum/stus.length;System.out.println("学生的平均年龄为:"+ave);}}
//Test2.java
public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubint num = 100; //局部变量Test test =new Test();test.calc1(num);System.out.println(num);Student student = new Student();student.setAge(18);
//      传参test.calc2(student);System.out.println(student.getAge());}}
//test3.java
public class Test3 {public static void main(String[] args) {// TODO Auto-generated method stub
//      Student s = new Student();先实例化对象再访问
//      System.out.println(s.tel);//        当定义成静态变量后   类名.属性名  访问静态变量String string = Student.tel;}}

三、封装

封装:不能直接访问,需要用过特定的方式访问,保证数据的安全。

封装步骤:

  1. 属性私有化 关键字:private 私有的 所修饰的属性只能在本类中访问
  2. 给属性添加对应的get/set方法,让外界只能通过get/set方法来操作属性
    get:获取属性值
    set:给属性赋值

Static:所修饰的属性和方法可以直接通过类名来访问
局部变量、类变量
全局变量又称为静态变量

为什么可以直接 类名.属性名 可以直接访问?

static所修饰的属性和类的属性加载时间不一样。
成员变量初始化实在对象实例化之后进行的,先实例化对象,后初始化类变量。
static所修饰的实行或者方法会在程序运行的时候就被加载和初始化。

三、继承

继承
A excends B
那么A可以调用B的属性和方法

方法重写:父类与子类中,方法名和参数列表一样

为什么要进行方法重写?
有时候父类的方法不能满足子类的个性化要求,此时就需要用到 重写

//父类 Pet.java
public class Pet {private String name;      //名字private int health;     //健康值private int love;      //亲密度public Pet() {super();System.out.println("父类的无参构造函数");}public Pet(String name, int health, int love) {super();this.name = name;this.health = health;this.love = love;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}public int getLove() {return love;}public void setLove(int love) {this.love = love;}public void print() {System.out.println("这是一只宠物");}}
//子类 Dog.java
public class Dog extends Pet {private String strain;//  在无参的构造函数中,super()写不写都会调用父类的无参构造函数public Dog() {super();//访问父类的无参构造函数 必须在方法的第一行// TODO Auto-generated constructor stub
//      super不可以访问父类私有的属性和方法System.out.println("dog子类的无参构造函数");}
//  访问父类的有参构造函数public Dog(String name, int heath, int love,String strain) {
//      为什么必须在第一行
//      实例化的时候,把必须先实例化父类,才可以实例化子类
//      先有父,再有子super(name, heath, love);// TODO Auto-generated constructor stubthis.strain = strain;}// 重写父类的方法,在调用的时候 优先调用自己的方法@Overridepublic void print() {System.out.println("这是一只宠物狗");}}
//子类 Penguni.java
public class Penguni extends Pet {private String sex;public Penguni() {super();// TODO Auto-generated constructor stub}@Overridepublic void print() {System.out.println("这是一只宠物企鹅");}
}

7.17 Java基础-类-方法-继承-多态相关推荐

  1. Java基础学习——方法

    Java基础学习--方法 前言 本文将介绍有关Java面向对象编程的知识之一:方法:其中包括方法的概念,三类方法的格式.方法的重载以及方法的内存 方法的概念 方法是程序中最小的执行单元 方法定义:将一 ...

  2. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...

    一.构造方法 当创建一个类时, 系统会自动创建一个默认的无参构造方法, 这个方法和类同名, 在创建对象的时候自动调用. 默认的构造方法里面什么也没有, 重写之后就可以在创建对象的时候同时搞点事情了. ...

  3. JAVA 使用类的继承和接口实现多态

    1 题目 使用类的继承和接口实现多态举例 2 源代码 2.1 使用接口实现多态 2.1.1 源代码 abstract class Vehicle //交通车辆抽象类 {abstract void co ...

  4. JAVA基础——toString()方法,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  5. Java基础小常识-继承-(10)

    一.继承的好处 1.好处: 1)提高了代码的复用性 2)让类与类之间产生了关系,给第三个特征多态提供了前提 2.Java中支持单继承,不直接支持多继承,但对c++中的多继承机制进行了改良. 3.单继承 ...

  6. java基础/接口与继承1(0.96万字)

    文章目录 接口 创建接口 使用接口 什么样的情况下该使用接口? 对象转型 明确引用类型与对象类型的概念 子类转父类(向上转型) 父类转子类(向下转型) 总结 没有继承关系的两个类,互相转换,一定会失败 ...

  7. Java基础02 方法与数据成员

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在Java基础01 从HelloWorld到面向对象,我们初步了解了对象(obje ...

  8. java 虚类private 继承_Java经典面试36题和答案

    1."static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成员 ...

  9. java里类得继承详细讲解_java中类的继承详解。

    前言 继承是面向对象的三大特征之一. 也是实现软件复用的重要手段. Java继承具有单继承的特点, 每个子类只有一个直接父类. 继承的特点 Java的继承通过extends关键字实现. 实现继承的类被 ...

最新文章

  1. usaco Controlling Companies
  2. (原创)一个JavaScript Function Outliner插件 第三个版本 让你的JavaScript代码也支持折叠...
  3. Retrofit2 完全解析 探索与okhttp之间的关系
  4. Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)
  5. 一台电脑上同启动两个Tomcat的方式,windows/Linux配置。
  6. windows reload()
  7. 17 HTTP编程入门
  8. mysql 内存溢出_mysql - MySQL在非常大的表上计算性能 - 堆栈内存溢出
  9. 2021年看得见的粉丝价值——五大平台KOL粉丝分析研究报告
  10. iOS【终极方案】精准获取webView内容高度,自适应高度
  11. 最全面的理解 | 工业互联网的前世今生
  12. 使用scroll实现Elasticsearch数据遍历和深度分页
  13. Bean的装配方式之xml装配--(超详细,适合小白入门)
  14. Windows内核结构
  15. CodeBlock 基本使用
  16. 查看计算机上硬盘的大小,怎么看硬盘的缓存信息?电脑硬盘缓存大小查看方法图解...
  17. Android MVP开发框架
  18. RHEL7的DNS服务
  19. 教女朋友用Python快速绘制图表
  20. MFC 利用opencv实现视频播放

热门文章

  1. 微信公众号自定义转发朋友圈
  2. strcasecmp php,PHP中strcmp()和strcasecmp()函数字符串比较用法分析
  3. strcasecmp 函数
  4. 226. 翻转二叉树【58】
  5. 求大学生计算机课堂作业截图,互动作业怎么截图?互动作业app截图方式详解[图]...
  6. KMEANS底层实现
  7. 从《梦幻西游》看角色养成
  8. 马云:错误使我们与众不同
  9. 回收站会清理也能恢复不久之前删除的文件
  10. 断言工具类AssertUtil的使用