Java面向对象基础

Java流程控制

scanner

Scanner s = new Scanner(System.in)

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

next()不能得到带有空格的字符串

nextLine()可以获得带有空格的字符串

str.equals()判断字符串是否相等

str.length数组的长度

数组必须先声明再创建

dataType[] arrayRefVar;
dataType[] arrayRefVar=new dataType[arraySize]
nums[i]=k 赋值

面向对象

静态方法与非静态方法

静态方法可以直接调用

非静态方法必须实例化这个类

值传递和引用传递:

引用传递

值传递

构造器详解

一个类即使什么也不写,也会存在一个构造方法
两个特点

  1. 必须和类的名字相同
  2. 必须没有返回类型,也不能写void
public class Demo04 {
    public Demo04(){

    }
}

构造器的应用(有参和无参)
在这里插入图片描述
Alt+insert:生成构造器

私有属性

private 修饰符声明,不可以直接调用
private String name;
//提供一些可以操作这个属性的方法
//get
public String getName(){
   return this.name
}
//set给这个数据设置值
public void setName(String name){
   this.name=name
}

这些方法可以通过alt+insert直接构造

继承

通过关键字extends

//学生 is 人
public class Student extends Person{
}

使用ctrl+H可以查看继承树
再Java中所有的类都默认直接或者间接继承Object类
Java是单继承,即一个儿子只有一个爸爸
私有的东西无法被继承
调用父类的构造器必须在子类的第一行,就算用子类新声明了一个对象,输出的也先是父类构造器,之后才是子类构造器

super详解

super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super只能出现在子类的方法或者构造方法中!
  3. super和this不能同时调用构造方法

VS this:
代表的对象不同:this:本身调用者这个对象,super:代表父类对象的应用
前提:this:没有继承也可以使用,super:只有在继承条件下才可以使用
构造方法:this():本类的构造,super():父类的构造

方法重写

静态方法和非静态方法的区别很大!
静态方法:方法的调用只和左边的数据类型相关
非静态方法:重写只和非静态方法相关,去掉static定义
重写必须是public不能是static
重写:需要有继承关系,子类重写父类的方法!

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大,比如private->public 但是逆向不可以
  4. 抛出的异常:范围可以缩小,但不能扩大

多态

在这里插入图片描述
多态注意事项

  1. 多态是方法的多态,和属性没有关系
  2. 父类和子类有联系,类型转换异常!ClassCastException!
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象!
    Father f1=new son();

不能重写的情况

  1. static方法,属于类,它不属于实例
  2. final定义的
  3. private方法

instanceof用法

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法
result = object instanceof class
参数
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

类型转换

  1. 父类引用指向子类的对象
  2. 把子类转换为父类,向上转型
  3. 把父类转换为子类,向下转型:强制转换
  4. 方便方法的调用,减少重复的代码!

Static关键字详解

在这里插入图片描述
注意观察执行顺序

抽象类

用abstract声明类和方法,抽象方法,只有方法名字,没有方法的实现。不能new抽象类,只能靠子类去实现它:约束
抽象类中可以写普通的方法
抽象方法必须在抽象类中
继承了抽象类的子类,都必须要实现它的方法
JAVA的类是单继承,但是接口是多继承的
抽象类存在构造器吗?
抽象类可以有构造方法,只是不能直接创建抽象类的实例对象而已。在继承了抽象类的子类中通过super()或super(参数列表)调用抽象类中的构造方法。示例代码如下:

package ahu;
 
abstract class Base{
    int a=7;
    public Base(){
    	a=8;
    }
    public Base(int i){
    	a=i;
    }
}
public class Demo01 extends Base {
	public Demo01(){
		super();
	}
	public Demo01(int i){
		super(i);
	}
	public static void main(String[] args) {
		Demo01 demo=new Demo01();
	    System.out.println(demo.a);
	    Demo01 demo1=new Demo01(9);
	    System.out.println(demo1.a);
	}
}

接口

在这里插入图片描述
接口中所有的定义其实都是抽象的,默认public abstract
在这里插入图片描述
作用

  1. 约束
  2. 定义一些方法,让不同的人实现
  3. public abstract
  4. public static final
  5. 接口不能被实例化
  6. implements可以实现多个接口
  7. 必须要重写接口中的方法

内部类

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值