目录
MVC
MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
- 模型(Model):程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能);
- 控制器(Controller):负责转发请求,对请求进行处理;
- 视图(View):界面设计人员进行图形界面设计。
优点:低耦合、重用性高、生命周期成本低(MVC模式使开发和维护用户接口的技术含量降低。)、部署快、有利于软件工程化管理
缺点:没有明确的定义(MVC内部原理比较复杂,想要完全理解蛮难)、不适合中小型应用程序(应用MVC模式到中小型程序得不偿失)、增加系统结构和实现的复杂性、视图对模型数据的低效率访问
CSS
css简介
css是层叠样式表(Cascading Style Sheets)的简称,是一种标记语言
主要用于设计
- 页面中的文本内容(字体大小、对齐方式)
- 图片的外形(宽高、边框)
- 版面的布局和外观显示样式
最大的价值:由html专注做结构、样式交给css
组成部分:选择器和修改样式
选择器{
属性:属性值;
属性:属性值;
...
}
css选择器的作用
根据不同需求把不同标签选出来
选择器分为两大类
- 基础选择器:标签选择器、类选择器、ID选择器、通用选择器
- 复合选择器:后代选择器、交集选择器、并集选择器、序选择器、下一个兄弟选择器...
标签选择器: (html的)标签 {}
div {
width: 100px;
height: 100px;
background-color: cyan;
}
类选择器:.class {}
.cyan {
width: 100px;
height: 100px;
background-color: cyan;
}
ID选择器:#id {}
#id {
color: red;
}
java语法基础
变量
常量
用final定义一个常量
final type varName = value;//格式
final int a = 1000;//样例
Scanner类
创建Scanner类的基本语法:
Scanner scan = new Scanner(System.in);
想要输入的是什么类型,就nextXxx,比如想输入int型
float、double型都如此
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
System.out.println(a);
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的姓名");
String name = scan.nextLine();
//接收一个字符串,可以有除Enter以外的所有符号
System.out.println("请输入你的ID");
String ID;
while(scan.hasNextLine()){
if(scan.hasNextInt()){
ID = scan.nextLine();
System.out.println("你输入的名字为"+name);
System.out.println("你输入的ID为"+ID);
break;
}
else{
System.out.println("请输入数字哦!");
ID = scan.nextLine();
continue;
}
}
运行结果是:
请输入你的姓名
小菜鸟
请输入你的ID
sajkbcjasc
请输入数字哦!
432423425
你输入的名字为小菜鸟
你输入的ID为432423425
Process finished with exit code 0
next() 与 nextLine() 区别
next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。(不可以获得空白)
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
继承
为什么要继承?
很多东西会具有相同的特性,比如说猫是动物,狗是动物,猫会跑会叫,毛茸茸的,有尖尖的耳朵,狗也拥有我说的这些特性,如果用要求你写一段代码陈述猫的特点,写一段狗的特点,你写了就会发现这两段代码会有很多相似之处,但是又不能删减,这样就会使得你的代码特别长,臃肿,这个时候就可以写一个animals特点的类,然后猫、狗继承这个类,再根据猫和狗不同于你写的anmals类写一写其他的属于它们的特征
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
类的继承格式
class 父类 {
}
class 子类 extends 父类 {
}
举个例子
class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
}
class Student extends Person{// Student类继承了Person类
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return this.school;
}
}
public class ArrayText {
public static void main(String args[]) {
Student stu = new Student();
stu.setName("小菜鸟");
stu.setSchool("吉首大学");
System.out.println("姓名:" + stu.getName() + ",学校:" +stu.getSchool());
}
}
继承的特性
-
子类拥有父类非 private 的属性、方法。
-
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
-
子类可以用自己的方式实现父类的方法。
-
Java 的继承是单继承,可以是多重继承
-
单继承就是一个子类只能继承一个父类
-
多重继承就是, B 类继承 A 类,C 类继承 B 类
-
-
提高了类之间的耦合性
-
(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
-
继承的限制
一个子类只能继承一个父亲
重写
什么是重写?
在java中方法的重写是建立在继承的基础之上的,没有继承性也就不能谈方法的重写。
方法的重写是当程序中父类的某一个方法并不能满足子类的需求时,子类可以重新定义该方法的内容与功能来满足子类的需求的一种操作。返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写规则
- 访问修饰符的限制一定要不小于被重写方法的访问修饰符
- 参数列表必须与被重写方法的相同
- 返回类型必须与被重写方法的返回类型相同
- //int 和long 不符合、void 和 int不符合
- 重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常
- final、static方法不能被重写 //可以被继承,不能被重写
- 如果一个方法不可以被继承,则不能重写它 //private
class animals{
public void move(){
System.out.println("动物可以移动");
}
}
class cat extends animals{
public void move(){
System.out.println("猫可以跑和走");
}
}
public class Text{
public static void main(String[] args) {
animals a = new animals();
animals b = new cat();
a.move();
b.move();
}
}
执行结果
猫可以跑和走
Super 关键字的使用
当需要在子类中调用父类的被重写方法时,要使用 super 关键字
class cat extends animals{
public void move(){
super.move();
System.out.println("猫可以跑和走");
}
}
public class Text{
public static void main(String[] args) {
animals b = new cat();
b.move();
}
}
执行结果
动物可以移动
猫可以跑和走
重载
方法重载是一项功能,在同一个类或者一个子类里面,可以有多个具有相同名称的方法(参数一定要不相同,函数返回类型可以相同可以不同)
这个类里面不能有一模一样(返回类型、参数列表)的方法,也就是说,每一个被重载的方法都必须有独一无二的参数列表
被重载的方法可以改变修饰符、参数列表、返回类型
正确示范
(改变了参数顺序
public String test(int a,String s){
return "overloading";
}
public String test(String s,int a){
return "overloading";
}
(改变了参数列表的数量
public String test(int a,String s){
return "overloading";
}
public String test(int a,float b,String s){
return "overloading";
}
错误示范
(只改变了返回类型,参数列表没有改变,编译时会报错
public String test(int a,String s){
return "overloading";
}
public int test(int a,String s){
return 1;
}
重载和重写的区别
简单地说,重写必须在继承的前提下,改变父类方法的核心,外壳子(返回类型、类名、参数列表)不变
而重载是在同一个类或者一个子类里,有相同的方法名称,其他的(修饰符、返回类型、参数列表、内容)都可以改变,其中,参数列表必须改变