方法重载
-------------------
方法名称一样 ,只是类型不一样叫重载
在有继承的前提下才有方法的重载。
方法覆盖(重写)
---------------------------
1.和父类方法名称相同
2.不能是私有方法
3.super可以访问父类方法
4.注意事项(参数的形态必须一致,名称无所谓。)
a.权限要大于等于父类的权限。(父类中可以是 void consume(int money){} 子类中是public void consume(int money){})
b.静态的无法覆盖非静态的 即静态覆盖静态的,非静态的覆盖非静态的。 必须是一致的。
c.子类中的所有的构造函数都会默认访问父类的空参数的构造函数,父类没有空构造需要子类传参数访问
d.因为每一个构造函数的第一行都有一条默认的语句 super();
class OverrideDemo1{
public static void main (String[] args){
RiceMan2 s2 = new RiceMan2();
s2.consume(570);
}
}
class RiceMan{
public void consume(int money){
if (money<500){
System.out.println("消费了" + money+"w");
}
else {
System.out.println("消费限制,不能超过500W");
}
}
}
//继承父类的,子方法中跟父类的方法一样的话就会覆盖掉
class RiceMan2 extends RiceMan{
public void consume(int money){
if (money<1000){
System.out.println("消费了" + money+"w");
}
else {
System.out.println("消费限制,不能超过1000W");
}
//super.consume(money); 可以通过super的方法调用父类的函数
}
}
简单的重写方法
--------------------------------------------------------
class OverrideDemo1{
public static void main (String[] args){
RiceMan2 s2 = new RiceMan2();
s2.consume();
}
}
class RiceMan{
public String name;
public String color;
public void consume(){
System.out.println("爬500W");
}
}
//继承父类的,子方法中跟父类的方法一样的话就会覆盖掉
class RiceMan2 extends RiceMan{
public void consume(){
System.out.println("爬1500W");
}
}
final
----------------------------------
1.可以修饰方法、类、变量
类: final calss Dog //final修饰类那么就不能继承
方法: final void add() //final修饰方法那么就不能重写
字段: final void add() //final修饰方法那么就不能重写
final
-------------------------------
1.修饰方法
方法:
final class Dog{}不能被继承 不能被重写
2.修饰的函数
方法:final class(){} 不能被重写
3.修饰的字段
类的成员
---------------------------------
1.成员变量
2.成员函数
3.构造代码块
4.构造函数
5静态代码块
6.内部类
内部类:
----------------------------------------
1.定义在class内部的类。
2.编译产生的outerclass$innerc.class
new Benz().fire();调用内部类中的方法
加final的修饰class
-----------------------------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.watch();
}
}
final class Dog{
public void watch(){
System.out.println("来人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("问一下~~");
super.watch();
}
}
加final 修饰方法 不能被重写会报错
-----------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.watch();
}
}
class Dog{
//final 修饰方法 不能被重写
public final void watch(){
System.out.println("来人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("问一下~~");
super.watch();
}
}
final 修饰常量 不能被赋值
--------------------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.name = "王春梅";
j.watch();
System.out.println(j.name);
}
}
class Dog{
//常量
public final String name ="哈哈哈";
public void watch(){
System.out.println("来人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("问一下~~");
super.watch();
}
}
习题
---------------------------------------------
class FinalDeom2{
public static void main(String[] args){
Benz c = new Benz ();
c.fire();
c.color = "red";
System.out.println(c.color);
c.tires = 5;
System.out.println(c.tires);
c.run();
}
}
class Car{
public String color;
public int tires;
public void run(){
System.out.println("200无敌~~");
}
}
class Benz extends Car{
private String brand ="BENZ";
public final void fire(){
System.out.println("bombom~~");
}
}
调用内部类
-----------------------------------------------
class FinalDeom2{
public static void main(String[] args){
Car c = new Car ();
c.run();
}
}
class Car{
public String color ="黑色";
public int tires;
public void run(){
new Benz().fire();//匿名调用内部类中的方法
System.out.println("200无敌~~");
}
class Benz {
public final void fire(){
System.out.println("bombom~~");
}
}
}
//内部类访问外部类的局部变量需要用final修饰局部变量
--------------------------------------------------------------------------------
class InnnerDeom{
public static void main(String[] args){
Car Ben = new Car();
Ben.run();
}
}
class Car {
public String color = "黑色";
public int tirs ;
public void run(){
//内部类访问外部类的局部变量需要用final修饰局部变量
final String key ="DaSA";
class Engine {
public void fire(){
System.out.println("插入钥匙" +key);
System.out.println("打火");
}
}
new Engine().fire();
System.out.println("200 开始run");
}
}
外部类访问其他的内部类,可以采用 Ben.new Engine().fire(); 的方式
------------------------------------------------------------------------
class InnnerDeom3{
public static void main(String[] args){
Car Ben = new Car();
Ben.new Engine().fire();
}
}
class Car {
public String color = "黑色";
class Engine {
public void fire(){
System.out.println("打火");
}
}
}
外部类访问其他的内部类,可以采用 Ben.new Engine().fire(); 的方式
------------------------------------------------------------------------
class InnnerDeom3{
public static void main(String[] args){
Car Ben = new Car();
new Car.Engine().fire();
}
}
class Car {
public String color = "黑色";
static class Engine {
public void fire(){
System.out.println("打火");
}
}
}
访问外部类的变量
----------------------------------------------------
class InnnerDeom3{
public static void main(String[] args){
Car Ben = new Car();
Ben.new Engine().fire();
}
}
class Car {
public String color = "黑色";
public int ties = 4;
class Engine {
public int ties = 4;
public void fire(){
//访问外部类的变量
System.out.println(Car.this.ties);
System.out.println("打火");
}
}
}