首页 技术 正文
技术 2022年11月21日
0 收藏 581 点赞 4,791 浏览 4880 个字

<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘PingFang SC’}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘PingFang SC’; min-height: 17.0px}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px ‘PingFang SC’; color: #1f2426; -webkit-text-stroke: #1f2426}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘PingFang SC’; -webkit-text-stroke: #1f2426}
p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘PingFang SC’; -webkit-text-stroke: #1f2426; min-height: 17.0px}
span.s1 {font: 12.0px ‘PingFang SC’}
span.s2 {font: 12.0px ‘PingFang SC’; color: #000000; -webkit-text-stroke: 0px #000000}
span.s3 {font-kerning: none; background-color: #edf1f2}
span.s4 {font: 12.0px ‘PingFang SC’; color: #000000}
–>

###继承:

package com.shiyan;public class Animal {    public int legNum;     //动物四肢的数量   //类方法    public void bark() {        System.out.println("动物叫!");    }}package com.shiyan;public class Dog extends Animal {     public void bark(){        System.out.println(“汪汪汪!”);     }
}class Test{ public static void main(String[] args) { Animal a = new Animal(); // Animal 对象 Dog d = new Dog(); // Dog 对象 Animal b = new Dog(); // Dog 对象,向上转型为Animal类型 a.bark();// 执行 Animal 类的方法 d.bark();//执行 Dog 类的方法 b.bark();//执行 Dog 类的方法 }}

###多态(它的前提是继承,一般至少两个类)

一、对象的多种形态

1.引用多态

父类的引用可以指向本类的对象

父类的引用可以指向子类的对象

2.方法多态

创建本类对象时,调用的方法为本类的方法。

创建子类对象时,调用的方法为子类的重写方法或继承的方法。

package OOP;public class Animal {    public void eat(){        System.out.println("动物吃东西");    }
}package OOP;public class Dog extends Animal{ public void eat(){ System.out.println("狗吃肉!"); } public void watchDoor(){ System.out.println("狗看门!"); }}package OOP;public class Cat extends Animal{}package OOP;public class Inital { public static void main(String[] args) { Animal obj1=new Animal(); //同一个类的引用既可以指向本类,也可以指向子类 Animal obj2=new Dog(); //......,可以指向子类 //Dog obj3=new Animal();不可以子类引用指向父类对象 Animal obj4=new Cat(); obj1.eat(); obj2.eat(); //obj2.watchDoor(); 多态,测试类中不可以调用子类独有的方法 obj4.eat(); }}

二、引用类型转换

1.向上类型转换(隐式、自动类型转换),是小类型到大类型的转换(安全的)

2.向下类型转换(强制类型转换),是大类型到小类型的转换(不安全的,可能会溢出)

3.instanceof运算符,来解决引用对象的类型,避免数据类型转换的安全性问题。

package OOP; public class Inital {    public static void main(String[] args) {        Dog dog=new Dog();//创建dog对象空间        Animal animal=dog;//自动类型提升  向上类型转换         //可以编译通过,可以类型转换        if(animal instanceof Dog){         Dog dog2=(Dog)animal;//向下类型转换,强制类型转换          }else{          System.out.println(“无法进行类型转换!转换成Dog类型”);          }         //编译无法通过,不可以类型转换        if(animal instanceof Cat){        Cat cat=(Dog)animal;//1.编译时,Cat类型  2.运行时 Dog类型  因为之前开辟的是dog空间        }else{          System.out.println(“无法进行类型转换!转换成Cat类型”);        }     }}

————————————————————————————————————

###Java中的方法内部类

特点:方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见。

package OOP;/*方法内部类要创建对象才可以调用*/public class MOuter {    //外部类中的方法    public void show(){        final int a=25;        int b=13;        //方法内部类        class MInner{            int c=2;            public void print(){                System.out.println("访问外部类的方法中的常量:"+a);                System.out.println("访问内部类中的变量:"+c);            }        }          /**由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问     控制符和 static 修饰符。*/        //必须创建对象才可以调用内部类中方法        MInner mi=new MInner();        mi.print();    }    public static void main(String[] args) {        MOuter mo=new MOuter();        mo.show();    }}

练习:package OOP;

//外部类public class HelloWorld {    private String name="爱慕课";    //外部类show方法
public void show(){ //定义方法内部类
class MInner{ int score=83; public int getScore(){ return score+10;
}
} //创建方法内部类的对象
MInner mi=new MInner(); //调用内部类的方法
mi.getScore(); }
//测试方法内部类 public static void main(String[] args) { //创建外部类的对象
HelloWorld mo=new HelloWorld(); //调用外部类的方法
mo.show(); }}

HashMap用法练习:

package CollectionExercise;import java.util.HashMap;
import java.util.Scanner;/*
目的:练习HashMap的用法
要求:依据用户名找到对应的电话号码。
*/
public class PhoneBookByMap {
public static void main(String[] args) {
//创建一个HashMap对象,名称为phonebook,键值对的类型均为String
HashMap<String,String> phonebook=new HashMap<String,String>();
//创建扫描器scan用于获取用户输入
Scanner scan=new Scanner(System.in);
//创建一个名为keyword的字符串用于存放用户输入的关键词
String keyword=new String();
//利用自己的initPhoneBook方法为电话簿装入数据,完成其初始化
phonebook=initPhoneBook(phonebook);
//提示用户输入待查询的姓名 打印输出
System.out.println("Input a name that you want to search :");
//将用户的输入信息装入字符串keyword中
keyword=scan.nextLine();
while(keyword!=null){
System.out.println("input a name:");
keyword=scan.nextLine();
}
//若用户输入某个关键词,则按照关键词在phonebook中查找其对应的号码
System.out.println("The result is:");
System.out.println(queryPhone(phonebook,keyword));
scan.close();
}/**该方法用于HashMap的初始化,为了装入一些号码数据,也可以定义这些数据*/
private static HashMap<String,String> initPhoneBook(HashMap<String,String> phonebook){
phonebook.put("shi","1343432545");
phonebook.put("cmx","1645764756");
phonebook.put("ywy","1432543534");
return phonebook;
}private static String queryPhone(HashMap<String, String> phonebook, String keyword) {
//创建存放结果的字符串result
String result=new String();/**用get方法查询keyword所对应的电话号码,并赋值给result
* put()方法中,参数为关键词key,返回值为其对应的value,未找到对应值时候,返回为空。*/
result = phonebook.get(keyword);//如果未找到用户的电话号码,则将查询的结果修改为未找到该用户
if(result==null){
return "not find this user. ";
}//返回查询结果
return result;
}}

#方法的调用和参数的传递

/*练习:方法的调用
目的:计算两科的平均分
*/
public class PrintScore{
public static void main(String[] args) {
PrintScore a=new PrintScore();
double avgScore=0.0;
int s1=20,s2=30;
int c=s1+s2;
System.out.println("s1+s2="+c);
avgScore=a.compterScore(89,91);
System.out.println(avgScore);
}
/*实参往形参传递*/
public int compterScore(int s1,int s2){
int avgScore=(s1+s2)/2;
return avgScore;
}
}

说明:项目很重要, 复习项目比复习知识点效果好些,进步大些。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,557
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898